{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:24.440024Z",
     "start_time": "2024-09-20T13:22:24.419703Z"
    }
   },
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from datetime import date\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import roc_auc_score\n",
    "import seaborn as sns\n",
    "plt.rcParams['font.sans-serif'] = 'SimHei'\n",
    "plt.rcParams['axes.unicode_minus'] = False"
   ],
   "outputs": [],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:24.489642Z",
     "start_time": "2024-09-20T13:22:24.482705Z"
    }
   },
   "cell_type": "code",
   "source": "# 随着移动设备的完善和普及，移动互联网+各行各业进入了高速发展阶段，这其中以O2O（Online to Offline）消费最为吸引眼球。据不完全统计，O2O行业估值上亿的创业公司至少有10家，也不乏百亿巨头的身影。O2O行业天然关联数亿消费者，各类APP每天记录了超过百亿条用户行为和位置记录，因而成为大数据科研和商业化运营的最佳结合点之一。 以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。然而随机投放的优惠券对多数用户造成无意义的干扰。对商家而言，滥发的优惠券可能降低品牌声誉，同时难以估算营销成本。 个性化投放是提高优惠券核销率的重要技术，它可以让具有一定偏好的消费者得到真正的实惠，同时赋予商家更强的营销能力。本次大赛为参赛选手提供了O2O场景相关的丰富数据，希望参赛选手通过分析建模，精准预测用户是否会在规定时间内使用相应优惠券。",
   "id": "7fc27b3368f1c0d9",
   "outputs": [],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:24.585266Z",
     "start_time": "2024-09-20T13:22:24.570657Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为，预测用户在2016年7月领取优惠券后15天以内的使用情况。\n",
    "# 预测投放的优惠券是否核销。\n",
    "# 使用优惠券核销预测的平均AUC（ROC曲线下面积）作为评价标准。即对每个优惠券coupon_id单独计算核销预测的AUC值，再对所有优惠券的AUC值求平均作为最终的评价标准\n",
    "\n",
    "# Coupon_id优惠券ID：null表示无优惠券消费，此时Discount_rate和Date_received字段无意义\n",
    "# Discount_rate优惠率：x \\in [0,1]代表折扣率；x:y表示满x减y。单位是元\n",
    "# Distanceuser经常活动的地点离该merchant的最近门店距离是x*500米（如果是连锁店，则取最近的一家门店），x\\in[0,10]；null表示无此信息，0表示低于500米，10表示大于5公里；\n",
    "# Date_received 领取优惠券日期\n",
    "# Date 消费日期：如果Date=null & Coupon_id != null，该记录表示领取优惠券但没有使用，即负样本；如果Date!=null & Coupon_id = null，则表示普通消费日期；如果Date!=null & Coupon_id != null，则表示用优惠券消费日期，即正样本；"
   ],
   "id": "d0e11031481933ff",
   "outputs": [],
   "execution_count": 5
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:25.485764Z",
     "start_time": "2024-09-20T13:22:24.602805Z"
    }
   },
   "cell_type": "code",
   "source": [
    " # 读取数据\n",
    " # 用户线下消费和优惠券领取行为\n",
    "off_train_data = pd.read_csv('ccf_offline_stage1_train.csv',encoding='utf-8')\n",
    "off_test_data = pd.read_csv('ccf_offline_stage1_test_revised.csv',encoding='utf-8')"
   ],
   "id": "a2541f5907218ef2",
   "outputs": [],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:25.557094Z",
     "start_time": "2024-09-20T13:22:25.485764Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#数据预处理\n",
    "# 空值统计\n",
    "off_train_data.isnull().sum()\n",
    "off_test_data.isnull().sum().sum()\n",
    "# off_train_data.duplicated()\n",
    "# off_test_data.duplicated()"
   ],
   "id": "918ebe3765bea3a9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12064"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:26.033957Z",
     "start_time": "2024-09-20T13:22:25.557094Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 查缺补漏\n",
    "# 填充缺失值\n",
    "off_train_data = off_train_data.fillna('null')\n",
    "off_test_data = off_test_data.fillna('null')"
   ],
   "id": "a33ee910f5858532",
   "outputs": [],
   "execution_count": 8
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:27.455923Z",
     "start_time": "2024-09-20T13:22:26.036083Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 去除重复数据\n",
    "off_test_data.drop_duplicates(inplace=True)\n",
    "off_train_data.drop_duplicates(inplace=True)"
   ],
   "id": "f19227be74af0cfb",
   "outputs": [],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:27.465358Z",
     "start_time": "2024-09-20T13:22:27.455923Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 基本信息，包括行数、列数、每列的数据类型和非空值的数量。\n",
    "# 于生成数据集中数值列的描述性统计信息\n",
    "off_train_data.info()\n",
    "# off_train_data.info()\n",
    "# off_train_data.describe()"
   ],
   "id": "8777074a1fac478f",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 1716991 entries, 0 to 1754883\n",
      "Data columns (total 7 columns):\n",
      " #   Column         Dtype \n",
      "---  ------         ----- \n",
      " 0   User_id        int64 \n",
      " 1   Merchant_id    int64 \n",
      " 2   Coupon_id      object\n",
      " 3   Discount_rate  object\n",
      " 4   Distance       object\n",
      " 5   Date_received  object\n",
      " 6   Date           object\n",
      "dtypes: int64(2), object(5)\n",
      "memory usage: 104.8+ MB\n"
     ]
    }
   ],
   "execution_count": 10
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:58.248555Z",
     "start_time": "2024-09-20T13:22:27.465358Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 用label列标记分类，label的取值为1表示正样本，0表示负样本，-1表示普通用户\n",
    "# 领取优惠券但没有使用，即负样本0\n",
    "# 领取优惠券并用优惠券消费日期，即正样本\n",
    "# 没有领取优惠券，没有使用优惠券购买 普通用户\n",
    "def label(row):\n",
    "    if row['Date'] != 'null' and row['Date_received'] != 'null':\n",
    "        if row['Coupon_id'] != 'null':\n",
    "            # 优惠券id不为空，表示使用了优惠券购买\n",
    "            # 计算使用优惠券的日期差值\n",
    "            td = pd.to_datetime(row['Date'], format='%Y%m%d') - \\\n",
    "                 pd.to_datetime(row['Date_received'], format='%Y%m%d')\n",
    "            if td <= pd.Timedelta(15, 'D'):  # 判断使用优惠券是否在15天内\n",
    "                return 1\n",
    "            else:\n",
    "                return 0\n",
    "        else:\n",
    "            # 其他情况：优惠券id为null，表示没有使用优惠券购买\n",
    "            return 0\n",
    "    if row['Date'] == 'null' and row['Date_received'] != 'null':\n",
    "        return 0\n",
    "    else:\n",
    "        return -1\n",
    "# 标记label的值达到分类目的\n",
    "off_train_data['label'] = off_train_data.apply(label, axis = 1)\n",
    "off_train_data['label'].value_counts()\n",
    "\n",
    "off_train_data"
   ],
   "id": "d77838f4097f47c6",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         User_id  Merchant_id Coupon_id Discount_rate Distance Date_received  \\\n",
       "0        1439408         2632      null          null      0.0          null   \n",
       "1        1439408         4663   11002.0        150:20      1.0    20160528.0   \n",
       "2        1439408         2632    8591.0          20:1      0.0    20160217.0   \n",
       "3        1439408         2632    1078.0          20:1      0.0    20160319.0   \n",
       "4        1439408         2632    8591.0          20:1      0.0    20160613.0   \n",
       "...          ...          ...       ...           ...      ...           ...   \n",
       "1754879   212662         3532      null          null      1.0          null   \n",
       "1754880   212662         3021    3739.0          30:1      6.0    20160508.0   \n",
       "1754881   212662         2934      null          null      2.0          null   \n",
       "1754882   752472         7113    1633.0         50:10      6.0    20160613.0   \n",
       "1754883   752472         3621    2705.0          20:5      0.0    20160523.0   \n",
       "\n",
       "               Date  label  \n",
       "0        20160217.0     -1  \n",
       "1              null      0  \n",
       "2              null      0  \n",
       "3              null      0  \n",
       "4              null      0  \n",
       "...             ...    ...  \n",
       "1754879  20160322.0     -1  \n",
       "1754880  20160602.0      0  \n",
       "1754881  20160321.0     -1  \n",
       "1754882        null      0  \n",
       "1754883        null      0  \n",
       "\n",
       "[1716991 rows x 8 columns]"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "      <th>Date</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>20160217.0</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1439408</td>\n",
       "      <td>4663</td>\n",
       "      <td>11002.0</td>\n",
       "      <td>150:20</td>\n",
       "      <td>1.0</td>\n",
       "      <td>20160528.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20160217.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>1078.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20160319.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20160613.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754879</th>\n",
       "      <td>212662</td>\n",
       "      <td>3532</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>1.0</td>\n",
       "      <td>null</td>\n",
       "      <td>20160322.0</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754880</th>\n",
       "      <td>212662</td>\n",
       "      <td>3021</td>\n",
       "      <td>3739.0</td>\n",
       "      <td>30:1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>20160508.0</td>\n",
       "      <td>20160602.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754881</th>\n",
       "      <td>212662</td>\n",
       "      <td>2934</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>2.0</td>\n",
       "      <td>null</td>\n",
       "      <td>20160321.0</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754882</th>\n",
       "      <td>752472</td>\n",
       "      <td>7113</td>\n",
       "      <td>1633.0</td>\n",
       "      <td>50:10</td>\n",
       "      <td>6.0</td>\n",
       "      <td>20160613.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754883</th>\n",
       "      <td>752472</td>\n",
       "      <td>3621</td>\n",
       "      <td>2705.0</td>\n",
       "      <td>20:5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20160523.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1716991 rows × 8 columns</p>\n",
       "</div>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:58.690975Z",
     "start_time": "2024-09-20T13:22:58.250554Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 随机抽样，按照正负样例1：1\n",
    "# 对不平衡的二分类数据进行随机抽样，以实现正负样本的均衡\n",
    "# 切片\n",
    "# X 提取特征数据，不包括标签列。\n",
    "# y 提取标签数据，只包括标签列。\n",
    "# X = off_train_data.loc[:,off_train_data.columns != 'label']  # 数据\n",
    "# y = off_train_data.loc[:,off_train_data.columns == 'label']  # 标签\n",
    "# 获取类1标签的长度\n",
    "count_one_Class = len(off_train_data[off_train_data['label'] == 1])\n",
    "# 获取两类标签的索引\n",
    "one_Class_index = off_train_data[off_train_data['label'] == 1].index\n",
    "zero_Class_index = off_train_data[off_train_data['label'] == 0].index\n",
    "xx = ['label为1的数目','label为0的数目']\n",
    "yy = [len(one_Class_index),len(zero_Class_index)]\n",
    "plt.bar(xx,yy)\n",
    "plt.show()\n",
    "plt.pie(yy, labels=xx, autopct='%1.1f%%')\n",
    "plt.show()"
   ],
   "id": "f6ef8b774e88cd",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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1WrM3/72N82bN09hYWH63ve+pzfeeENRUVGd+kMAAAD/1K4QkaTS0lIdOHBACQkJioyMtDXm2LFjKiws1PXXX6+wsLAOTRQAAASedocIAABAZwmAyxQBAAB/RYjgO9XQ0HDez2FZltatW6eTJ0+2WL569Wp9/fXX5/38AM4P+znagxDBBVVbW6uSkhLf7Z/85Cdat27deT3nl19+qf/7v/9TU1OTb1l5ebmeeeYZlZWVtXp8Y2OjFi9erLq6Os2cOVN//etf9dFHH2n16tWSpLvuuksff/zxGde1Z88eXXvttUpJSTnrvwEDBqigoOC8fibAn7Gf43wQIgGqqKhIAwYMsPXY3Nxc3X///R1e1+7du5WSknLG+1avXq177rlH//3vfyVJJ0+ebPFVAWezb98+3XLLLWe878iRI0pKSmpx4vOOHTt03XXXye1269ixYzp27Jiqq6slnb7Cb1lZmRYtWqSgoCC53W69/vrrcjqdqqio0EcffaTY2NgzrisoKEhRUVHaunXrGf9t3rxZkuR22/62BKDT+PN+/o9//EM//vGPlZycrI0bN7a6n/286+C/Ki6oe++9VwcPHtSkSZO0YcMGnTp1Sj/4wQ/OOebjjz9Wenq6QkJCWt03atQolZWVqampScOHD1f37t21ZcsWrV+/XmVlZXr00UclSWVlZXriiSd07733qqSkRIMHD1ZlZaX+/e9/y+l0qqGhQUFBQcrLy1N8fLzvYNfQ0CDLsnxXAHbY/NYmrhiMrqy9+3lBQYF+85vfaPbs2Ro0aJAef/xxXXvtterXr58k9vOuhhDBBVNfXy/LsjR79mzl5eWptrZW9fX15zxAnTx5Uunp6br77ruVm5vb6n6v16sNGzYoJiZGRUVFmjhxor744gt98skn2rZtm+/boZ9++mnf9xwdP35cu3bt0meffab8/HwNGzZM/fr1065du9TY2KijR49q9OjRqqqqUlNTk5566indcccdkuwfoOw+Dgg0HdnPV69ereHDh/v2s3vvvVfr1q3Tk08+KYn9vKshRLqQPXv2KCMjQ0ePHlX//v01b948XX311ZJOH0zS09P1/vvva9iwYZo/f7569uwpSdq/f78yMjL02Wef6YYbbtC8efPUvXvb34a8atUqZWVl+f6KaGhokNPp1E033dTicV6vV5MnT9YTTzwht9utlStX6ujRo2cMEef/fE+1w+FQVlaWJk6c6Ds4Na+r+RWVQYMGqa6uTr///e91ww03qE+fPqqqqtLcuXN1880366WXXlJSUpIWLlyo8PBw38Gp2YkTJzR69Og2f17gYuAP+/mhQ4da3D9o0CBlZ2f7brOfdy2cI9JFNDU16Ve/+pVuvfVWbdmyRUOGDNGCBQt89+/bt0/XXHON1q9fL6fTqeeee06SVFVVpSlTpujmm2/2veQ6f/58W+u877779J///Ee7d+/W7t279eijjyolJcV3u/nf0KFDddlll0mSgoOD2/19RPfff7+Sk5O1cOFC37KGhgbfX0pvvvmmnn32WS1evFj9+/fXNddco+joaD377LM6efKkjh07Jkn66quvzvhXXFRUlN59990z/nvnnXfaNVfgQvKX/dzr9bY4hyQsLEylpaXnXA/7eeAiRLqQdevW6aGHHlJxcbG8Xq+OHj3qu+/SSy/V1KlTdfnllys9PV1btmxRY2Ojtm3bpqCgIE2bNk29e/fWgw8+qK1bt3Zo/W+99ZZGjx6tzZs3y+Px+JaXlJT4DlB2TJgwQcOHD9eECRMkSUOHDtWVV16pFStW6MiRI5JOn8XffIAaM2aMXn/9dVVUVOjAgQO6++67NWvWLIWGhurBBx/U3r17JZ0+8a/5PWrAX/nDfu5yuXz7pySFhISopqamxfOwn3cdvDXTRTidTi1btkw5OTmKiYlRnz59Wnwsrk+fPr6XQ3v37q2GhgZVVFSotLRU5eXlSkxMlHT6Ly6v16va2toznkx6Nu+8846qqqo0evRoPfXUU8rIyNDMmTM1duxYlZaWqnfv3rafKzc31/fe8Z133inp9AF27NixevXVV5WRkaHa2lpdcsklkqSVK1dqxYoVKi8vV/fu3XXrrbfqq6++Unp6uu666y7deuutqqqq0pEjRzRw4MBW6+MlW/gLf9nPIyIiVF5e7hvn9XpbnQjKft51ECJdxO7du/X3v/9d7777rqKiorR9+/YWn6kvKSmRZVlyOBwqLS2Vy+XS97//ffXq1UvXXXedsrKyJJ2+yJDH42nXx9hKS0s1Z84cPffcc+rWrZsWL16sNWvWaPny5Ro6dKhOnTrVrldEzubOO+/Uzp07JUk1NTW+M+QffvhhTZgwQampqVq3bp2CgoI0ZswYjRs3TmFhYRo+fLjS09M1bNiwFn+lNWt+yfZMGhoaFBcXd95zBzqDv+zn8fHxys/P952ncfDgQdtvybKfBx7emukimq9OWF1drb1792revHn69tcMlZSUaOnSpSoqKtLixYs1cuRIud1ujRw5UsXFxdq/f79cLpfefvttTZ48WXa/oujLL7/U/fffrwkTJmjMmDG+5ampqb6XUSMiItStW7fz/hkHDx6s9PR0SVJlZWWL6w98+umnio6O1qRJk/TII49o4MCBvgPfxIkTtXv3bv385z8/7zkAJvnLfn7LLbforbfe0pEjR3Ty5EmtWLFCycnJttbFfh54eEWki7jxxhuVkpKiCRMmKCYmRhMnTtSiRYt04sQJSaf/Qtm7d6/+8pe/6Ec/+pHmzZsnSQoPD1d2drYyMjI0a9Ys9e/fXy+//LKtv5TWrl2rBQsW6JZbbtFTTz3V4r7CwkJZlqU33nhDV155pe2fo6GhQRMmTJDD4fD9Zfe/SktLdfz48RZ/YY0YMUIJCQlauHCh9u3bp0suuUSzZ8/Www8/rLlz5+rGG29UZmamBg4c2OIkuqamJp04ceKsF3L69uMA0/xlPx84cKDuu+8+3X777QoNDVVMTIzuuece3/3s512MBVwAJ0+etB599FHrjTfeOOP9s2bNsq6//nrrvvvus/bt22f7eZ9++mmrrKzMsizL+vrrr60//elPvvsOHjxo/fSnP7WmTp1qbd++3bf8iy++sBYuXGiNGTPGysrKsmpqaqxTp05Z8+fPt5KSkqyNGzdalmVZCxYssIYNG2b961//8o3du3evNWbMmLPOp76+3rr66qutgoIC2z8DECjOdz8/ePCg9c9//tOqra1tsZz9vGtxWJbN194AP1VTU6OcnByNHTtWkZGRvuU5OTkaOXKkoqKifMt27typESNGcAVFwM+wn/svQgQAABjDyaoAAMAYQgQAABhDiAAAAGMIEQAAYAwhAgAAjCFEAACAMYQIAAAwhhABAADGECIAAMCY/weZv+4oFO+qtAAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGFCAYAAAChXbqjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9OUlEQVR4nO3dd3hUddr/8fe0hJBCCz2IYKRJL9JEkCbC2vChqGAB1Gdd9GfZ5VlYXVQeHizI6rqou+uuK2sFZKWqgBWlKF2kg0QIJJBCeps55/fHMUGkJWSSM+Xzuq5cMTPJmTsmTD5zf7/nPg7TNE1ERERE/MBpdwEiIiISOhQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRv3HYXICI2MHxg+sDhBKefnwYML5gG4LCO7XD49/giEtAULERCiWlaf9jhzD/qvhLIOwHZRyHrsPU+55j1Pi8NfMVW2DB8VjAoDR+nvf/F7a4IqFELompb72vUPvVxdH2IaQRxTSC2MdSsCy7P6fU4XOBU41QklDhM0zTtLkJELoJpglFi/XEHKMmHY9vhxB7IOQrZx6zgUBoeCjKsr7FTVB0raMS3hobtoEE7aNwJaiVY95d+T06POh0iQUrBQiQYlHYiSl/xF+fBsW2QvAmObYWjWyHjgP3B4WJFREP91tDgCitwNGxvvdWsa91v+ADT/8s2IuJ3ChYigchXcipEFOVa4SF5808hYgtk/hC8IaIiouOtrkaDdnBJL7hsoLXUYnit/SEOLaOIBBoFC5FAYBrWm9MN+RmwbyUc+AQOf2uFCLE4nNbSyWUDIXEwJFwJLvfp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rO5GoO/XiIiB+q2gUSerE9GkKzRoaw2pAvAVg9NjXcZeRIKGgoVIqPjlq/mCk9aArpxjkJsKucetj/NO/PTfaZD3023eIv/V4alpXV68ZjxE14PoBtYeiLgE633t5hDbGCJjrM//ZVASkaCmYCESDgyv9Qcc59lnOBTnWUEj9zj4in4aGuU41S1wOH728c/f//R5Lo81zTKq9qmOw8/5Sqz3Trc6ECIhTsFCRERE/EazbEVERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRvFCxERETEbxQsRERExG8ULERERMRv/j/NN6M6yFSTxQAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:58.834729Z",
     "start_time": "2024-09-20T13:22:58.690975Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 随机选择相同数目的索引\n",
    "np.random.seed(25)  # 定义随机种子\n",
    "# 使用 np.random.choice 从标签为0的样本中随机选择与标签为1样本数量相同的样本（random_zero_index）。replace=True 允许重复抽样。\n",
    "random_zero_index = np.array(np.random.choice(zero_Class_index,count_one_Class,replace=True))\n",
    "# 合并模型样本索引\n",
    "sample = np.concatenate([one_Class_index,random_zero_index])\n",
    "# 按照索引获取行\n",
    "off_train_data = off_train_data.loc[sample,:]\n",
    "# 打印结果对比\n",
    "print('label为1的数目：', len(one_Class_index))\n",
    "print('label为0的数目：', len(zero_Class_index))\n",
    "print('总数：', len(one_Class_index) + len(zero_Class_index))\n",
    "print('抽样label为1的数目：', len(one_Class_index))\n",
    "print('随机抽取label为0的数目：', len(random_zero_index))\n",
    "print('抽样总数：', len(one_Class_index) + len(random_zero_index))\n",
    "print('总样本形状：', off_train_data.shape)"
   ],
   "id": "cd98713aa1026f2e",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "label为1的数目： 62153\n",
      "label为0的数目： 953236\n",
      "总数： 1015389\n",
      "抽样label为1的数目： 62153\n",
      "随机抽取label为0的数目： 62153\n",
      "抽样总数： 124306\n",
      "总样本形状： (124306, 8)\n"
     ]
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:22:58.841363Z",
     "start_time": "2024-09-20T13:22:58.836119Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# EDA（Exploratory Data Analysis，探索性数据分析）是数据分析过程中的一个重要步骤，旨在通过可视化和总结性统计分析，深入理解数据的特征和结构。其主要目的包括：\n",
    "# \n",
    "# 数据理解：帮助分析师了解数据的基本性质，如分布、趋势和模式。\n",
    "# \n",
    "# 数据清洗：识别缺失值、异常值和重复数据，为后续分析做好准备。\n",
    "# \n",
    "# 特征分析：探究不同变量之间的关系，发现潜在的相关性或因果关系。\n",
    "# \n",
    "# 可视化：使用各种图表（如直方图、箱体图、散点图等）直观展示数据特征，便于交流和解释。\n",
    "# \n",
    "# 假设生成：为后续建模和分析提供依据，提出新的假设或问题。\n",
    "# \n",
    "# EDA 的常用步骤：\n",
    "# 数据加载和查看：检查数据的基本信息和结构。\n",
    "# 数据描述性统计：计算均值、标准差、四分位数等指标。\n",
    "# 缺失值和异常值处理：识别并处理缺失数据和离群点。\n",
    "# 数据可视化：创建多种图表展示数据特征和分布。\n",
    "# 变量间关系分析：分析变量之间的相关性和交互作用。\n",
    "# 通过 EDA，分析师能够更好地为建模做准备，提高分析结果的有效性和可靠性。"
   ],
   "id": "3690c6937b22f209",
   "outputs": [],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T14:03:52.892625Z",
     "start_time": "2024-09-20T14:03:52.244984Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 探索性分析EDA\n",
    "# 据探索通常被视为特征工程的一个重要组成部分。通过数据探索，你可以了解数据的分布、缺失值、异常值等，从而为特征选择和创建新特征提供基础。这些发现帮助你更有效地进行特征工程，提升模型性能。\n",
    "off_train_data.value_counts()\n",
    "# 变换距离的类型，缺失值替换为-1\n",
    "off_train_data['Distance'] = off_train_data['Distance'].replace('null', -1).astype(int)\n",
    "off_test_data['Distance'] = off_test_data['Distance'].replace('null', -1).astype(int)\n",
    "print('查看缺失值结果：\\n',off_train_data.isnull().sum())\n",
    "# 描述性统计分析\n",
    "description = off_train_data.describe()\n",
    "# 依次计算极差值、变异系数、四分位数间距\n",
    "# 衡量数据集中分布范围\n",
    "description.loc['range'] = description.loc['max'] - description.loc['min']\n",
    "# 变异系数是标准差与均值的比值，反映数据相对波动性；\n",
    "description.loc['var'] = description.loc['std'] / description.loc['mean']\n",
    "# 上四分位数（75%）与下四分位数（25%）之间的差。这一指标用于衡量数据的集中程度和离散程度，尤其是在数据存在极端值时。\n",
    "description.loc['dis'] = description.loc['75%'] - description.loc['25%']\n",
    "print('描述性统计结果：\\n',np.round(description, 2))  # 保留两位小数\n",
    "# 距离箱型图\n",
    "off_train_data['Distance'].isnull().sum()\n",
    "off_test_data['Distance'].isnull().sum()\n",
    "D1 = np.array(off_train_data['Distance'].values)\n",
    "D2 = np.array(off_test_data['Distance'].values)\n",
    "plt.boxplot([D1,D2],labels=('off_train_data','off_test_data'))\n",
    "plt.title('距离箱型图')\n",
    "plt.show()\n",
    "# 箱体图：识别分布特征：显示数据的中位数、四分位数以及范围，有助于理解数据的集中趋势和离散程度。\n",
    "# 发现异常值：通过箱体外的点，容易识别出异常值或离群点。"
   ],
   "id": "fab0083bed2c53c8",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "查看缺失值结果：\n",
      " User_id          0\n",
      "Merchant_id      0\n",
      "Coupon_id        0\n",
      "Discount_rate    0\n",
      "Distance         0\n",
      "Date_received    0\n",
      "Date             0\n",
      "label            0\n",
      "Dis_rate         0\n",
      "Discount_type    0\n",
      "Discount_man     0\n",
      "Discount_jian    0\n",
      "dtype: int64\n",
      "描述性统计结果：\n",
      "           User_id  Merchant_id   Distance     label   Dis_rate  Discount_type  \\\n",
      "count   124306.00    124306.00  124306.00  124306.0  124306.00      124306.00   \n",
      "mean   3693787.05      4075.27       1.87       0.5       0.84           0.95   \n",
      "std    2125191.23      2473.48       3.36       0.5       0.10           0.21   \n",
      "min        236.00         3.00      -1.00       0.0       0.20           0.00   \n",
      "25%    1849676.50      1941.00       0.00       0.0       0.80           1.00   \n",
      "50%    3697501.00      3621.00       0.00       0.5       0.83           1.00   \n",
      "75%    5540370.25      6434.00       2.00       1.0       0.90           1.00   \n",
      "max    7360967.00      8856.00      10.00       1.0       0.99           1.00   \n",
      "range  7360731.00      8853.00      11.00       1.0       0.79           1.00   \n",
      "var          0.58         0.61       1.80       1.0       0.11           0.22   \n",
      "dis    3690693.75      4493.00       2.00       1.0       0.10           0.00   \n",
      "\n",
      "       Discount_man  Discount_jian  \n",
      "count     124306.00      124306.00  \n",
      "mean          59.36           8.15  \n",
      "std           63.64           8.27  \n",
      "min            0.00           0.00  \n",
      "25%           20.00           5.00  \n",
      "50%           30.00           5.00  \n",
      "75%          100.00          10.00  \n",
      "max          300.00         100.00  \n",
      "range        300.00         100.00  \n",
      "var            1.07           1.01  \n",
      "dis           80.00           5.00  \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhsAAAGxCAYAAADLSHSoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAApjklEQVR4nO3deXxU9b3/8fckM2HLAiQQLrKJQliUJYLklgcVCIrah3IrFK5K7+WhRRTt41pcAEFAqVYQKciOUIVLJUUa4CJWUOSWoqBGrVEREiJcDASygNmQTJbz+4NfRobszPkmmcnr+U+Ys3zmM5z5nrxzlhmHZVmWAAAADAlq6AYAAEBgI2wAAACjCBsAAMAowgYAADCKsAEAAIwibAAAAKMIGwAAwCjCBgAAMIqwAQAAjCJsAE2U2+1WUVFRlfMvXLigtWvX6uuvv651zdLSUr311ls6e/ZshXnnzp3TBx98oIsXL15Vv1f65ptvtHLlSltqATDL2dANAPBdWlqa7rzzToWEhEiSLMtSRESEPvzwQ91www0qLi6udL1x48bp97//vdxut5o1a+Y1r0WLFtq2bZvS0tK0YMECr3mlpaVyu91q3ry5HA6HZ/rmzZs1f/58zZ07V2PGjJFlWSouLlabNm306quvaseOHdqxY4e6dOlSoZejR49qz549CgkJ8aopXQpGI0aMUI8ePVRcXKxWrVrp+PHjSkhI0NSpUz3LxcfHKz09vU7/dw888ICmT59ep3UA1A1hAwgALpdLkvTVV19Jkj7++GPPL9CQkBC99tprio2N9VqnPICcPn1av/jFL+RyueRyuSr8oj9w4ICGDh3qeVxWVqbi4mKVlJRo165duuaaayRJycnJWrRokVq2bKnnn39eCxYsUFlZmcLCwrRu3Tq99dZbCgoK0r333ivpUiAqKirSwYMHFRISovz8fB0+fFinT59Wdna2br75Zp0/f14HDx7U6NGjFRsbq//+7//W7t27tWXLFoWEhHjCVTmn06mZM2d6nkOSEhISNHDgQMXExFT4f5s8eXKFGgDsR9gAAoDTWXEol08LCgqSy+WqcOSi/HFoaKj++c9/eqb/8MMPWr16tQYPHqyhQ4cqJCREW7du1ZtvvqnZs2dr0KBBFZ7r4MGDevzxxxUbG6vVq1dr4sSJGjp0qP7rv/5LmZmZGj9+vOLi4rR48WJt2rRJe/fu1bp161RcXOwJSoMGDdKgQYO0bt06ffLJJ/rjH/+opKQkHTx4UK+++qqkS0dwysNBUFBQhWAUHBwsp9PpeW1paWlauHChJk2a5BU2ypcLCgpSUBBnkwHTGGVAACgpKZEkJSUlKSkpSSkpKSorK6tTjWeeeUaLFy9WUVGRevbsqXfffVc///nPNXr0aL3yyiuaMWOGBg0apOTkZN19992e9SzL0j/+8Q/9/Oc/17Jly7R//37FxcUpODhYknTs2DH16dNHixcvVkREhO6++2716tVLISEhio6OrhAYiouLqzza4HA4Kix/uctDV2lpqebMmaOSkhKtW7dO/fr1U79+/dS/f38lJyd7liNsAOZxZAMIAC6XS8OHD9drr72mQ4cOqXfv3l5HIO6///4K69xxxx1asmSJ57Hb7VZZWZkyMzN1+PBhJScna9iwYRoyZIh27typJ598Uvfdd5/i4uL0/fffe9ZzOBx6+umnJV0KHo899pjWrFmjW265RZL06quv6vjx47rtttu8nn/v3r1KSEjQtddeq4yMDL388styuVxKSUlRbm6uZs2apZycHEnSjBkz1KZNG88pm6pcHkQWLVqkpKQk3X333Xr55ZdVXFys+++/X/369atwSgmAWYQNIAD8y7/8i9asWSNJGjlypJ588kmvsPHGG294/YKdN2+eSktLvWpYlqXz5897ruV4/vnn1aZNG0nSgAED9OmnnyokJESnTp2SZVmV9uFwOOR0Or2OMBQVFWn69Om65557PNPOnDmjW265xbOc0+lUdHS0XC6XPv/8c0VHR6tDhw6eozPR0dEKDw9XSUmJ5yhOdZKSkpSQkKA1a9bopZde0vTp0/Xjjz8qNDSUi0GBBkDYAAJAUVGRLl68qIiIiErnX3nNRlBQUIXA0L17d33++edasWKFJGnt2rU6ceKEunXrVqHe4MGDvR6vWLFCu3fvltPpVElJiZ577jm5XC499dRT1Z72KJ/Xrl07TZ8+XadPn9bGjRs1ffp0jRo1SklJSUpMTNTjjz8uh8OhtWvXem7XLSsrq7L2oEGDtGfPHkVGRur48eN66aWX5HQ69corr3hO7wCoP4QNIACUX8C5a9cuSdL69euVmJioYcOG1brGo48+6vX4iy++0MSJE7Vo0SINHDiw2nXj4+PVp08f7du3T998843GjRunmJgY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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 34
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:00.196476Z",
     "start_time": "2024-09-20T13:22:59.400298Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 属性构造\n",
    "# 定义函数处理折扣率\n",
    "def convertRate(row):\n",
    "    if row == 'null':\n",
    "        return 1.0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return 1.0 - float(rows[1]) / float(rows[0])\n",
    "    else:\n",
    "        return float(row)\n",
    "# 定义函数处理折扣率类型\n",
    "def getDiscountType(row):\n",
    "    if row == -1:\n",
    "        return -1\n",
    "    elif ':' in row:\n",
    "        # 满多少减多少\n",
    "        return 1\n",
    "    else:\n",
    "        # 折扣率\n",
    "        return 0\n",
    "# 定义函数处理满减类型的折扣优惠券\n",
    "def Man_Rate(row):\n",
    "    if row == -1:\n",
    "        return 0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return int(rows[0])\n",
    "    else:\n",
    "        return 0\n",
    "def Jian_Rate(row):\n",
    "    if row == -1:\n",
    "        return 0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return int(rows[1])\n",
    "    else:\n",
    "        return 0\n",
    "# 调用函数构建跟折扣率相关的四个特征属性\n",
    "off_train_data['Dis_rate'] = off_train_data['Discount_rate'].apply(convertRate)\n",
    "off_train_data['Discount_type'] = off_train_data['Discount_rate'].apply(getDiscountType)\n",
    "off_train_data['Discount_man'] = off_train_data['Discount_rate'].apply(Man_Rate)\n",
    "off_train_data['Discount_jian'] = off_train_data['Discount_rate'].apply(Jian_Rate)\n",
    "off_test_data['Dis_rate'] = off_test_data['Discount_rate'].apply(convertRate)\n",
    "off_test_data['Discount_type'] = off_test_data['Discount_rate'].apply(getDiscountType)\n",
    "off_test_data['Discount_man'] = off_test_data['Discount_rate'].apply(Man_Rate)\n",
    "off_test_data['Discount_jian'] = off_test_data['Discount_rate'].apply(Jian_Rate)"
   ],
   "id": "d92492fc801c6485",
   "outputs": [],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:00.313067Z",
     "start_time": "2024-09-20T13:23:00.196476Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 根据label标签来提取正、负样本的全部数据\n",
    "data = off_train_data[off_train_data['label'] != -1]\n",
    "data = data.fillna(-1)\n",
    "data['label'].value_counts()"
   ],
   "id": "8ab509acbed5a91a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "label\n",
       "1    62153\n",
       "0    62153\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 17
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:00.868054Z",
     "start_time": "2024-09-20T13:23:00.313067Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 获取领券日期是星期几，并且构建成特征\n",
    "def getWeekday(row):\n",
    "    if row == 'null':\n",
    "        return row\n",
    "    else:\n",
    "        return date(int(row[0:4]),int(row[4:6]),int(row[6:8])).weekday()+1\n",
    " \n",
    "data['Weekday'] = data['Date_received'].astype(str).apply(getWeekday)\n",
    "off_test_data['Weekday'] = off_test_data['Date_received'].astype(str).apply(getWeekday)\n",
    "# 周六日为类型1，其他为0\n",
    "data['Is_weekend'] = data['Weekday'].apply(lambda x: 1 if x in [6,7] else 0)\n",
    "off_test_data['Is_weekend'] = off_test_data['Weekday'].apply(lambda x: 1 if x in [6,7] else 0)\n",
    "# 跟星期相关的独热编码\n",
    "def One_hot(df):\n",
    "    weekdaycols = ['weekday' + str(i) for i in range(1,8)]\n",
    "    tmpdf = pd.get_dummies(df['Weekday'].replace('null', np.nan))\n",
    "    tmpdf.columns = weekdaycols\n",
    "    df[weekdaycols] = tmpdf\n",
    "    return df\n",
    "data = One_hot(data)\n",
    "off_test_data = One_hot(off_test_data)\n",
    "off_test_data"
   ],
   "id": "fbb381921ab48c08",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "        User_id  Merchant_id  Coupon_id Discount_rate  Distance  \\\n",
       "0       4129537          450       9983          30:5         1   \n",
       "1       6949378         1300       3429          30:5        -1   \n",
       "2       2166529         7113       6928        200:20         5   \n",
       "3       2166529         7113       1808        100:10         5   \n",
       "4       6172162         7605       6500          30:1         2   \n",
       "...         ...          ...        ...           ...       ...   \n",
       "113635  5828093         5717      10418          30:5        10   \n",
       "113636  6626813         1699       7595          30:1        -1   \n",
       "113637  6626813         7321       7590          50:5        -1   \n",
       "113638  4547069          760      13602          30:5         0   \n",
       "113639  6675965         7487        613          20:1         5   \n",
       "\n",
       "        Date_received  Dis_rate  Discount_type  Discount_man  Discount_jian  \\\n",
       "0            20160712  0.833333              1            30              5   \n",
       "1            20160706  0.833333              1            30              5   \n",
       "2            20160727  0.900000              1           200             20   \n",
       "3            20160727  0.900000              1           100             10   \n",
       "4            20160708  0.966667              1            30              1   \n",
       "...               ...       ...            ...           ...            ...   \n",
       "113635       20160716  0.833333              1            30              5   \n",
       "113636       20160707  0.966667              1            30              1   \n",
       "113637       20160712  0.900000              1            50              5   \n",
       "113638       20160717  0.833333              1            30              5   \n",
       "113639       20160728  0.950000              1            20              1   \n",
       "\n",
       "        Weekday  Is_weekend  weekday1  weekday2  weekday3  weekday4  weekday5  \\\n",
       "0             2           0     False      True     False     False     False   \n",
       "1             3           0     False     False      True     False     False   \n",
       "2             3           0     False     False      True     False     False   \n",
       "3             3           0     False     False      True     False     False   \n",
       "4             5           0     False     False     False     False      True   \n",
       "...         ...         ...       ...       ...       ...       ...       ...   \n",
       "113635        6           1     False     False     False     False     False   \n",
       "113636        4           0     False     False     False      True     False   \n",
       "113637        2           0     False      True     False     False     False   \n",
       "113638        7           1     False     False     False     False     False   \n",
       "113639        4           0     False     False     False      True     False   \n",
       "\n",
       "        weekday6  weekday7  \n",
       "0          False     False  \n",
       "1          False     False  \n",
       "2          False     False  \n",
       "3          False     False  \n",
       "4          False     False  \n",
       "...          ...       ...  \n",
       "113635      True     False  \n",
       "113636     False     False  \n",
       "113637     False     False  \n",
       "113638     False      True  \n",
       "113639     False     False  \n",
       "\n",
       "[112803 rows x 19 columns]"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "      <th>Dis_rate</th>\n",
       "      <th>Discount_type</th>\n",
       "      <th>Discount_man</th>\n",
       "      <th>Discount_jian</th>\n",
       "      <th>Weekday</th>\n",
       "      <th>Is_weekend</th>\n",
       "      <th>weekday1</th>\n",
       "      <th>weekday2</th>\n",
       "      <th>weekday3</th>\n",
       "      <th>weekday4</th>\n",
       "      <th>weekday5</th>\n",
       "      <th>weekday6</th>\n",
       "      <th>weekday7</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4129537</td>\n",
       "      <td>450</td>\n",
       "      <td>9983</td>\n",
       "      <td>30:5</td>\n",
       "      <td>1</td>\n",
       "      <td>20160712</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6949378</td>\n",
       "      <td>1300</td>\n",
       "      <td>3429</td>\n",
       "      <td>30:5</td>\n",
       "      <td>-1</td>\n",
       "      <td>20160706</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2166529</td>\n",
       "      <td>7113</td>\n",
       "      <td>6928</td>\n",
       "      <td>200:20</td>\n",
       "      <td>5</td>\n",
       "      <td>20160727</td>\n",
       "      <td>0.900000</td>\n",
       "      <td>1</td>\n",
       "      <td>200</td>\n",
       "      <td>20</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2166529</td>\n",
       "      <td>7113</td>\n",
       "      <td>1808</td>\n",
       "      <td>100:10</td>\n",
       "      <td>5</td>\n",
       "      <td>20160727</td>\n",
       "      <td>0.900000</td>\n",
       "      <td>1</td>\n",
       "      <td>100</td>\n",
       "      <td>10</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6172162</td>\n",
       "      <td>7605</td>\n",
       "      <td>6500</td>\n",
       "      <td>30:1</td>\n",
       "      <td>2</td>\n",
       "      <td>20160708</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>113635</th>\n",
       "      <td>5828093</td>\n",
       "      <td>5717</td>\n",
       "      <td>10418</td>\n",
       "      <td>30:5</td>\n",
       "      <td>10</td>\n",
       "      <td>20160716</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>113636</th>\n",
       "      <td>6626813</td>\n",
       "      <td>1699</td>\n",
       "      <td>7595</td>\n",
       "      <td>30:1</td>\n",
       "      <td>-1</td>\n",
       "      <td>20160707</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>113637</th>\n",
       "      <td>6626813</td>\n",
       "      <td>7321</td>\n",
       "      <td>7590</td>\n",
       "      <td>50:5</td>\n",
       "      <td>-1</td>\n",
       "      <td>20160712</td>\n",
       "      <td>0.900000</td>\n",
       "      <td>1</td>\n",
       "      <td>50</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>113638</th>\n",
       "      <td>4547069</td>\n",
       "      <td>760</td>\n",
       "      <td>13602</td>\n",
       "      <td>30:5</td>\n",
       "      <td>0</td>\n",
       "      <td>20160717</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>113639</th>\n",
       "      <td>6675965</td>\n",
       "      <td>7487</td>\n",
       "      <td>613</td>\n",
       "      <td>20:1</td>\n",
       "      <td>5</td>\n",
       "      <td>20160728</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>112803 rows × 19 columns</p>\n",
       "</div>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 18
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:01.264457Z",
     "start_time": "2024-09-20T13:23:00.869562Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义函数得到另外相关的三个特征属性\n",
    "def func(data):\n",
    "    # 提取用户使用的优惠券的数量\n",
    "    f = data[['User_id', 'Coupon_id']]\n",
    "    f['rec_coupon'] = 1\n",
    "    f = f.groupby(['User_id']).agg('sum').reset_index()\n",
    " \n",
    "    # 全部优惠券的数目\n",
    "    f1 = data[['Coupon_id']]\n",
    "    l1 = len(f1)\n",
    "    f1['Number_coupon'] = 1\n",
    "    f1 = f1.groupby(['Coupon_id']).agg('sum').reset_index()\n",
    "    # 优惠券的流行度：每一种优惠券占全部优惠券的比例\n",
    "    f1['Coupon_popu'] = f1['Number_coupon']/l1\n",
    " \n",
    "    # 提取用户和商家\n",
    "    f2 = data[['User_id','Merchant_id']]\n",
    "    l2 = len(f2)\n",
    "    # 提取顾客去商家的数量\n",
    "    f2['Number_merchant'] = 1\n",
    "    f2 = f2.groupby(['Merchant_id']).agg('sum').reset_index()\n",
    "    # 商家的受欢迎度：商家的顾客（用户）占全部商家的顾客（用户）的比例\n",
    "    f2['Merchant_popu'] = f2['Number_merchant']/l2\n",
    " \n",
    "    # 合并特征属性\n",
    "    d0 = pd.merge(data, f[['User_id','rec_coupon']], on='User_id')\n",
    "    d1 = pd.merge(d0,f1[['Coupon_id','Coupon_popu']],on='Coupon_id')\n",
    "    d2 = pd.merge(d1,f2[['Merchant_id','Merchant_popu']],on=['Merchant_id'])\n",
    "    return d2\n",
    "# 调用以上函数构建相关的三个特征属性\n",
    "new_data = func(data)\n",
    "new_test_data = func(off_test_data)\n",
    "new_data"
   ],
   "id": "8f76436f86eee17f",
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\31838\\AppData\\Local\\Temp\\ipykernel_19164\\2871514971.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  f['rec_coupon'] = 1\n",
      "C:\\Users\\31838\\AppData\\Local\\Temp\\ipykernel_19164\\2871514971.py:11: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  f1['Number_coupon'] = 1\n",
      "C:\\Users\\31838\\AppData\\Local\\Temp\\ipykernel_19164\\2871514971.py:20: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  f2['Number_merchant'] = 1\n",
      "C:\\Users\\31838\\AppData\\Local\\Temp\\ipykernel_19164\\2871514971.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  f['rec_coupon'] = 1\n",
      "C:\\Users\\31838\\AppData\\Local\\Temp\\ipykernel_19164\\2871514971.py:11: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  f1['Number_coupon'] = 1\n",
      "C:\\Users\\31838\\AppData\\Local\\Temp\\ipykernel_19164\\2871514971.py:20: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  f2['Number_merchant'] = 1\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "        User_id  Merchant_id  Coupon_id Discount_rate  Distance  \\\n",
       "0       1113008         1361    11166.0          20:1         0   \n",
       "1       1449506         1361    11166.0          20:1         1   \n",
       "2       1449506         1361    11166.0          20:1         1   \n",
       "3       4781321         1361    11166.0          20:1         0   \n",
       "4       4781321         1361    11166.0          20:1         0   \n",
       "...         ...          ...        ...           ...       ...   \n",
       "124301  1553594         4719     3808.0          30:1         0   \n",
       "124302  5502967         5368    11294.0          20:1        -1   \n",
       "124303   129784         3919     5638.0        100:30         4   \n",
       "124304   774542         3526    13982.0          0.95         0   \n",
       "124305  1296395         6830     6892.0          50:5         0   \n",
       "\n",
       "        Date_received        Date  label  Dis_rate  Discount_type  ...  \\\n",
       "0          20160515.0  20160521.0      1  0.950000              1  ...   \n",
       "1          20160516.0  20160522.0      1  0.950000              1  ...   \n",
       "2          20160522.0  20160602.0      1  0.950000              1  ...   \n",
       "3          20160516.0  20160521.0      1  0.950000              1  ...   \n",
       "4          20160521.0  20160524.0      1  0.950000              1  ...   \n",
       "...               ...         ...    ...       ...            ...  ...   \n",
       "124301     20160522.0        null      0  0.966667              1  ...   \n",
       "124302     20160513.0        null      0  0.950000              1  ...   \n",
       "124303     20160521.0        null      0  0.700000              1  ...   \n",
       "124304     20160229.0        null      0  0.950000              0  ...   \n",
       "124305     20160323.0        null      0  0.900000              1  ...   \n",
       "\n",
       "        weekday1  weekday2  weekday3  weekday4  weekday5  weekday6  weekday7  \\\n",
       "0          False     False     False     False     False     False      True   \n",
       "1           True     False     False     False     False     False     False   \n",
       "2          False     False     False     False     False     False      True   \n",
       "3           True     False     False     False     False     False     False   \n",
       "4          False     False     False     False     False      True     False   \n",
       "...          ...       ...       ...       ...       ...       ...       ...   \n",
       "124301     False     False     False     False     False     False      True   \n",
       "124302     False     False     False     False      True     False     False   \n",
       "124303     False     False     False     False     False      True     False   \n",
       "124304      True     False     False     False     False     False     False   \n",
       "124305     False     False      True     False     False     False     False   \n",
       "\n",
       "        rec_coupon  Coupon_popu  Merchant_popu  \n",
       "0                1     0.000088       0.000088  \n",
       "1                2     0.000088       0.000088  \n",
       "2                2     0.000088       0.000088  \n",
       "3                3     0.000088       0.000088  \n",
       "4                3     0.000088       0.000088  \n",
       "...            ...          ...            ...  \n",
       "124301           1     0.000008       0.000008  \n",
       "124302           1     0.000008       0.000008  \n",
       "124303           1     0.000008       0.000008  \n",
       "124304           1     0.000008       0.000008  \n",
       "124305           1     0.000008       0.000008  \n",
       "\n",
       "[124306 rows x 24 columns]"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "      <th>Date</th>\n",
       "      <th>label</th>\n",
       "      <th>Dis_rate</th>\n",
       "      <th>Discount_type</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday1</th>\n",
       "      <th>weekday2</th>\n",
       "      <th>weekday3</th>\n",
       "      <th>weekday4</th>\n",
       "      <th>weekday5</th>\n",
       "      <th>weekday6</th>\n",
       "      <th>weekday7</th>\n",
       "      <th>rec_coupon</th>\n",
       "      <th>Coupon_popu</th>\n",
       "      <th>Merchant_popu</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1113008</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0</td>\n",
       "      <td>20160515.0</td>\n",
       "      <td>20160521.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1449506</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>1</td>\n",
       "      <td>20160516.0</td>\n",
       "      <td>20160522.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>2</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1449506</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>1</td>\n",
       "      <td>20160522.0</td>\n",
       "      <td>20160602.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>2</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4781321</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0</td>\n",
       "      <td>20160516.0</td>\n",
       "      <td>20160521.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>3</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4781321</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0</td>\n",
       "      <td>20160521.0</td>\n",
       "      <td>20160524.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>3</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124301</th>\n",
       "      <td>1553594</td>\n",
       "      <td>4719</td>\n",
       "      <td>3808.0</td>\n",
       "      <td>30:1</td>\n",
       "      <td>0</td>\n",
       "      <td>20160522.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124302</th>\n",
       "      <td>5502967</td>\n",
       "      <td>5368</td>\n",
       "      <td>11294.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>-1</td>\n",
       "      <td>20160513.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124303</th>\n",
       "      <td>129784</td>\n",
       "      <td>3919</td>\n",
       "      <td>5638.0</td>\n",
       "      <td>100:30</td>\n",
       "      <td>4</td>\n",
       "      <td>20160521.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.700000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124304</th>\n",
       "      <td>774542</td>\n",
       "      <td>3526</td>\n",
       "      <td>13982.0</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0</td>\n",
       "      <td>20160229.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124305</th>\n",
       "      <td>1296395</td>\n",
       "      <td>6830</td>\n",
       "      <td>6892.0</td>\n",
       "      <td>50:5</td>\n",
       "      <td>0</td>\n",
       "      <td>20160323.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.900000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>124306 rows × 24 columns</p>\n",
       "</div>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 19
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:01.481440Z",
     "start_time": "2024-09-20T13:23:01.264457Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义函数得到跟距离相关的特征属性\n",
    "def Get_mer_dis(new_data):\n",
    "    # 查看距离的类别数量\n",
    "    new_data['Distance'].value_counts()\n",
    "    # 提取用户-商家距离的数据集\n",
    "    md1 = new_data[new_data.Coupon_id != 'null'][['Merchant_id', 'Distance']]\n",
    "    md1.replace('null', -1, inplace=True)\n",
    "    md1.replace(-1, np.nan, inplace=True)\n",
    "    # 用户-商家的距离最小值\n",
    "    md2 = md1.groupby('Merchant_id').agg('min').reset_index()\n",
    "    md2.rename(columns={'Distance': 'merchant_min_distance'}, inplace=True)\n",
    "    # 用户-商家的距离最大值\n",
    "    md3 = md1.groupby('Merchant_id').agg('max').reset_index()\n",
    "    md3.rename(columns={'Distance': 'merchant_max_distance'}, inplace=True)\n",
    "    # 用户-商品的距离平均值\n",
    "    md4 = md1.groupby('Merchant_id').agg('mean').reset_index()\n",
    "    md4.rename(columns={'Distance': 'merchant_mean_distance'}, inplace=True)\n",
    "    # 用户-离商品的距离中位值\n",
    "    md5 = md1.groupby('Merchant_id').agg('median').reset_index()\n",
    "    md5.rename(columns={'Distance': 'merchant_median_distance'}, inplace=True)\n",
    "    # 将所有特征合并在一起\n",
    "    merchant_feature = pd.merge(md2, md3, on='Merchant_id', how='left')\n",
    "    merchant_feature = pd.merge(merchant_feature, md4, on='Merchant_id', how='left')\n",
    "    merchant_feature = pd.merge(merchant_feature, md5, on='Merchant_id', how='left')\n",
    "    new_data = pd.merge(new_data,merchant_feature,on='Merchant_id',how='left')\n",
    "    return new_data\n",
    "# 调用上边函数构建距离相关的特征属性\n",
    "new_data = Get_mer_dis(new_data)\n",
    "new_test_data = Get_mer_dis(new_test_data)\n",
    "new_data"
   ],
   "id": "7a47796dbd772b9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "        User_id  Merchant_id  Coupon_id Discount_rate  Distance  \\\n",
       "0       1113008         1361    11166.0          20:1         0   \n",
       "1       1449506         1361    11166.0          20:1         1   \n",
       "2       1449506         1361    11166.0          20:1         1   \n",
       "3       4781321         1361    11166.0          20:1         0   \n",
       "4       4781321         1361    11166.0          20:1         0   \n",
       "...         ...          ...        ...           ...       ...   \n",
       "124301  1553594         4719     3808.0          30:1         0   \n",
       "124302  5502967         5368    11294.0          20:1        -1   \n",
       "124303   129784         3919     5638.0        100:30         4   \n",
       "124304   774542         3526    13982.0          0.95         0   \n",
       "124305  1296395         6830     6892.0          50:5         0   \n",
       "\n",
       "        Date_received        Date  label  Dis_rate  Discount_type  ...  \\\n",
       "0          20160515.0  20160521.0      1  0.950000              1  ...   \n",
       "1          20160516.0  20160522.0      1  0.950000              1  ...   \n",
       "2          20160522.0  20160602.0      1  0.950000              1  ...   \n",
       "3          20160516.0  20160521.0      1  0.950000              1  ...   \n",
       "4          20160521.0  20160524.0      1  0.950000              1  ...   \n",
       "...               ...         ...    ...       ...            ...  ...   \n",
       "124301     20160522.0        null      0  0.966667              1  ...   \n",
       "124302     20160513.0        null      0  0.950000              1  ...   \n",
       "124303     20160521.0        null      0  0.700000              1  ...   \n",
       "124304     20160229.0        null      0  0.950000              0  ...   \n",
       "124305     20160323.0        null      0  0.900000              1  ...   \n",
       "\n",
       "        weekday5  weekday6  weekday7  rec_coupon  Coupon_popu  Merchant_popu  \\\n",
       "0          False     False      True           1     0.000088       0.000088   \n",
       "1          False     False     False           2     0.000088       0.000088   \n",
       "2          False     False      True           2     0.000088       0.000088   \n",
       "3          False     False     False           3     0.000088       0.000088   \n",
       "4          False      True     False           3     0.000088       0.000088   \n",
       "...          ...       ...       ...         ...          ...            ...   \n",
       "124301     False     False      True           1     0.000008       0.000008   \n",
       "124302      True     False     False           1     0.000008       0.000008   \n",
       "124303     False      True     False           1     0.000008       0.000008   \n",
       "124304     False     False     False           1     0.000008       0.000008   \n",
       "124305     False     False     False           1     0.000008       0.000008   \n",
       "\n",
       "        merchant_min_distance  merchant_max_distance  merchant_mean_distance  \\\n",
       "0                         0.0                    1.0                     0.2   \n",
       "1                         0.0                    1.0                     0.2   \n",
       "2                         0.0                    1.0                     0.2   \n",
       "3                         0.0                    1.0                     0.2   \n",
       "4                         0.0                    1.0                     0.2   \n",
       "...                       ...                    ...                     ...   \n",
       "124301                    0.0                    0.0                     0.0   \n",
       "124302                    NaN                    NaN                     NaN   \n",
       "124303                    4.0                    4.0                     4.0   \n",
       "124304                    0.0                    0.0                     0.0   \n",
       "124305                    0.0                    0.0                     0.0   \n",
       "\n",
       "        merchant_median_distance  \n",
       "0                            0.0  \n",
       "1                            0.0  \n",
       "2                            0.0  \n",
       "3                            0.0  \n",
       "4                            0.0  \n",
       "...                          ...  \n",
       "124301                       0.0  \n",
       "124302                       NaN  \n",
       "124303                       4.0  \n",
       "124304                       0.0  \n",
       "124305                       0.0  \n",
       "\n",
       "[124306 rows x 28 columns]"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "      <th>Date</th>\n",
       "      <th>label</th>\n",
       "      <th>Dis_rate</th>\n",
       "      <th>Discount_type</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday5</th>\n",
       "      <th>weekday6</th>\n",
       "      <th>weekday7</th>\n",
       "      <th>rec_coupon</th>\n",
       "      <th>Coupon_popu</th>\n",
       "      <th>Merchant_popu</th>\n",
       "      <th>merchant_min_distance</th>\n",
       "      <th>merchant_max_distance</th>\n",
       "      <th>merchant_mean_distance</th>\n",
       "      <th>merchant_median_distance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1113008</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0</td>\n",
       "      <td>20160515.0</td>\n",
       "      <td>20160521.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1449506</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>1</td>\n",
       "      <td>20160516.0</td>\n",
       "      <td>20160522.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>2</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1449506</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>1</td>\n",
       "      <td>20160522.0</td>\n",
       "      <td>20160602.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>2</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4781321</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0</td>\n",
       "      <td>20160516.0</td>\n",
       "      <td>20160521.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>3</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4781321</td>\n",
       "      <td>1361</td>\n",
       "      <td>11166.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0</td>\n",
       "      <td>20160521.0</td>\n",
       "      <td>20160524.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>3</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.000088</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124301</th>\n",
       "      <td>1553594</td>\n",
       "      <td>4719</td>\n",
       "      <td>3808.0</td>\n",
       "      <td>30:1</td>\n",
       "      <td>0</td>\n",
       "      <td>20160522.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.966667</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124302</th>\n",
       "      <td>5502967</td>\n",
       "      <td>5368</td>\n",
       "      <td>11294.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>-1</td>\n",
       "      <td>20160513.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124303</th>\n",
       "      <td>129784</td>\n",
       "      <td>3919</td>\n",
       "      <td>5638.0</td>\n",
       "      <td>100:30</td>\n",
       "      <td>4</td>\n",
       "      <td>20160521.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.700000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124304</th>\n",
       "      <td>774542</td>\n",
       "      <td>3526</td>\n",
       "      <td>13982.0</td>\n",
       "      <td>0.95</td>\n",
       "      <td>0</td>\n",
       "      <td>20160229.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124305</th>\n",
       "      <td>1296395</td>\n",
       "      <td>6830</td>\n",
       "      <td>6892.0</td>\n",
       "      <td>50:5</td>\n",
       "      <td>0</td>\n",
       "      <td>20160323.0</td>\n",
       "      <td>null</td>\n",
       "      <td>0</td>\n",
       "      <td>0.900000</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>124306 rows × 28 columns</p>\n",
       "</div>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:01.734580Z",
     "start_time": "2024-09-20T13:23:01.483972Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 距离柱状图\n",
    "x = np.arange(-1,11)\n",
    "dis1 = np.array(new_data['Distance'].value_counts().sort_index())\n",
    "dis2 = np.array(new_test_data['Distance'].value_counts().sort_index())\n",
    "plt.bar(x,dis1,tick_label=x, label='off_train_data', width=0.3)\n",
    "plt.bar(x+0.3,dis2,label='off_test_data',width=0.3)\n",
    "plt.xlabel('距离')\n",
    "plt.ylabel('计数')\n",
    "plt.title('距离计数分布情况')\n",
    "plt.legend()\n",
    "plt.show()\n"
   ],
   "id": "60d5d554bb46b91b",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHDCAYAAADIo3XgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIlklEQVR4nO3de1xUdeL/8fdcAFEEQRLNS2UqeUHT5KvrLS90WTXzsnbf9FtrsW1rBVmRXUzKFTWzzdzWW1pkZoq0Zpbptmua+au8ZBfFyEzUUBCRQbnO/P7w69QECEwwZ/S8no+Hj5j5nDnnfUaSN+d85hyLy+VyCQAAwISsRgcAAAAwCkUIAACYFkUIAACYFkUIAACYFkUIAACYFkUIAACYFkUIAACYFkUIAACYFkUIAACYFkUIQK2UlJSouLi4yvFTp05p/vz5+uqrr2q8ztLS0irH9u3bp08++aRG6/n222/15ZdfVng+MzOzxlmkM/v4y683b95cq9ef9eyzz2rt2rU1Xt7hcOjzzz/32P4v7dq1S8eOHavy9ef6ewFQOYoQYGKZmZmKjo5WTEyMYmJi1KVLF/Xt21eS1KVLF0VHR1f4ExMTo6lTp8rlclX6gzc4OFirV6/W66+/XmGsvLxcp0+f1i/v7PPOO+9o1KhRys3NrTTj+vXrNXv27Cr34b///a/i4+NVWlqqN998U6+++qokaezYsfr888/ldDo1evRopaam1ug9OXLkiAYNGqStW7dKkr755hvdfffd2rFjR41ef1Z2drZSU1OVlZVV49d8//33uv3221VQUCBJysvLU35+vgoLC1VYWKi//OUv+vDDD1VYWCiHw6Hc3Fx3iczNzdXw4cO1bt069/qmTJlS6d/h2T8zZsyo1T4BFyK70QEAGCcgIECStHv3bknStm3b9Oijj0qSAgMDtWDBAvXo0cPjNWd/8B4+fFjDhg1TQECAAgICZLFYPJbbvHmzu1RJktPpVGlpqcrKyrR27Vq1bNlSkjR48GAtWbJE48eP19KlSxUREeGxHrvd7s5ZmV69emnu3LlavHixAgMDFRAQoP/+9786evSounbtqszMTBUVFWnQoEE1ek/mz5+vsrIydenSRZJ05ZVXatCgQZo2bZrefPNN2e0V/9l0OByy2WwKDAyUzWaTJC1btkwhISG64447KizvdDpVVlam0tJSNWrUyP382a+DgoIkSffcc4/27dsnm80mi8Uih8OhGTNmaPbs2SovL1dJSYneeustdenSRREREWrXrp2eeOIJdenSRa1bt1ZgYKCuuuoqLViwoEKG4cOHKzAwsEbvCXAhowgBJlbZD/Wzz1mtVgUEBLh/KJ919nFISIh27tzpfv7EiRN65ZVXFBsbq759+yowMFArV67UsmXL9MQTT6hnz56VZmjcuLEWLFig0aNHKykpSf/85z89xn9dsH7t448/1tChQxUeHq4dO3aosLBQmZmZGjJkiLZt26b9+/erffv27uIlnTmFZLfb3aXlrAMHDmjlypV6+OGH1bhxY/fzjz76qG688UbNmzdPEydOrJBhxIgROnToUKX5fl0kf6lbt25asWKF+/HZ97a4uFgOh0OvvfaaTp8+rcDAQFksFg0fPlz33Xefhg4d6i6kTZo0cb9PKSkpGjp0qCZNmqQ33nhDVqtVNpvNo2ydZbFYKuw/YEYUIcDEysrKJEmff/65JCkjI0NOp7NW63j88ccVGRmp22+/XR06dND777+vpKQkhYWF6eTJk3rxxRfVs2dPffnll3riiSf0r3/9q8I6IiMjNW/ePDVt2rTW+7B27Vrl5ubqyJEjOnjwoJo1a6YtW7aovLxcVqtVBw4c0L59+xQdHe3xujfeeMOjnDmdTj366KNq1aqVbrvtNo9lL7vsMiUkJGj69Olq3ry5brrpJo/xV199VRaLxX1EaObMmdq2bZuWLVumQ4cOKTMzU3FxcRWy//JI1y233KLrr79ekrR06VJ9+eWXuv766/Xss88qICBANptNDodDzz33nFJSUlRSUqIrr7xSr732mnsdoaGhSkhI0IEDB2SxWKotkQAoQoCpBQQEaODAgVqwYIE+/fRTdezY0aMc3H777RVe8/vf/15z5sxxPy4pKZHT6dTRo0f1zTff6Msvv1T//v3Vq1cvrVmzRg8//LBuu+029e7dWwcPHvRY186dO91HQQIDA9WiRQtlZ2d7nGIqLi6W0+nUyZMnJck9N6lp06ay2WyaM2eOvvvuO91555269NJL1alTJ0VGRuqBBx5QSUmJ+vfvr3nz5ql3797Kzc3VNddco/fee0+tW7f2yPKPf/xDX331lZYtW1bpqbjx48fr4MGDevLJJ7V//3499NBD7lNLl1xyiXu5L7/8UmvWrNFLL72kli1b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+fn5uvzydoqMvEiRkRfVeMzXrFarGjc+v2+SWteYto9KWa0W2e1Wjz+2/zt/b7NZK4z5cpIjABjh+++/05//fLeuu+5qPfzwRB09mq0NGz5Qv3499eqrC7Ru3bvq16+nbrttjCSdc+xcZs6cpn79emrnzu2aNu0Z9e7dQzNnTnOPP/fcFC1a9E998MF7uvXW0Vq16i332K5dOzR+/G0aMqSv/vSnO/X99995rPvIkcPq16+nx3Pbt3+uP/zhBm3e/F+NGTNc118/SG+/vbxG78nmzZt0880jNXToEL333hqPsaqy/Hr/+vXr6bF/1e1DXaMIoYKzExfDwxtV+COp0ufDmjSkDAG4YJ06dUoPPXS/YmN7aenS5WrWLEqPPZaoAQMGad26j3T77eMUF3ed1q37SAsXviZJGjhwSJVj5zJxYoLWrftIMTHdlJDwqD788L+aODHBY5n/9/8+1erVK/XXvyaof/+BkiSn06knnnhUgwYN0YoV76hLl656+eW/12j/8vPzlZq6VDNnztHdd9+refNeVHHxua/8ffx4rp544jHdfvs4zZ+/RJ9+usU9dq4sv96/des+cu/fb9kHb3FqDBXUduJifUw8BAB/smXLJjVs2FB33XWPJOnBBydp+PBrlJGxV126xCgwMFABAQEep53sdrsaN25c6di5BAU1UFBQA9lsNjVo0ECNGzeucNHCw4cP6c030xQSEuLx/JIlyxQSEqLvvvtOp04V6uDBAzXa5unTp5SY+Jjatm2n1q0v0YsvzlJeXp6aN29R5Wu2bduqli1bacSIUZKku+66V5MmPVBtlsr2ry72wVsUIVTpfJ64CAB16ejRbLVo0dL9ODAwUJGRkTp6NFtSjM/zXH/9sAolyGq16q233tCaNe/o4otbqnnz5jW+D1jjxqFq376DJCkg4Mx9u6q7A1dOTo6aNfv5jg0tW/78/nib5bfsg7coQgAAVCMqqrmOHDnkflxcXKycnBxFRTWvt21ardYqy0iDBhVvT7J9++davXqV3nprtSIimmrr1s3au3dPjbbVqFGjWucLDw9XTs4x9+Ps7J9qlaWy/fst++AtihAAwC+0axZS/UIGbadPn/566aUXtHjxfA0deoNee22xWrVqrY4dO9VDwjNatmytzz//f+rbt6/27ftOPXr0lM1mq3L506dPS5IcDoeysg7qpZde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8oi++OIL5eXlGZLn+PHjio+P16FDh9zP+fvPhpqiCPmh5ORkjRs3zugYbps2bZLD4VBSUpLatGmjhIQErVy50uhYbv72fp01aNAg3Xrrre7H+/fv1yWXXGJgop+1aNFCI0aMkCSVlpZq8eLFuvbaaw1O9bOUlBTFxcXpyiuvNDqK2969e+VyuTRy5Eh17dpVd999tw4fPmx0LLcVK1Zoz549atWqlT766COVlpYaHamC4uJivfbaa7rnnnuMjiJJateunT799FN98803Kigo0LJly9S3b1+jY0k6c7r/4osvdj+2/t+t2e12uyF5KvuF099/NtQURcgg9913n3r27FnhT2pqql/8pvRLe/bsUbdu3RQcHCxJio6O9qu5Lv72flWmpKREixcv1m233WZ0FA979uxR3759tWXLFj3++ONGx5Ekffrpp9q6dasmTZpkdBQPmZmZat++vZ5//nmtXbtWAQEBeuqpp4yOJenMEb45c+bokksu0U8//aRXX31Vd9xxh4qLi42O5mHNmjXq1q2bWrVqZXQUSWeK0HXXXadRo0apZ8+e2rVrlx599FGjY0mSOnbsqI0bN8r1f1e4SUtLU9euXdW4cWND8lT2C6e//2yoKWOqJTR16lQVFRVVeL5Jkya+D1MNh8Ph8Q+XxWKR1WpVfn4+92uroTlz5qhhw4a66aabjI7iITo6WkuWLFFKSoqSkpL08ssvG5qnuLhYTz/9tKZMmeJXp50kacSIEe6jaJL05JNPKi4uTg6Hw/CsH374oU6fPq2lS5eqSZMmuvfee3XDDTcoPT1dN998s6HZfmn58uX661//anQMt507d+qjjz7S22+/rcsvv1zz58/XhAkTtHLlSlksFkOz3XXXXYqPj9fo0aMVFBSkHTt2KCUlxbA8lf3CeaH8bKAIGSQyMtLoCDVms9kUGBjo8VxQUJCKiorOq292o2zZskXLly/XihUrFBAQYHQcDxaLRZ06ddL06dM1aNAgw/8Bmzdvnrp06aKBAwcalqGmQkND5XQ6dfToUcOL0E8//aSuXbu6f5Gy2+2Kjo72q09AHThwQD/++KP69OljdBS39957T8OGDVPXrl0lSQ8++KCWL1+uPXv2qGPHjoZma9KkiZYvX64DBw5o0aJFys/P1w033GBopl+7UH42cGoM1QoLC6vwsc3CwkK/+6Hujw4ePKiH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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:01.807782Z",
     "start_time": "2024-09-20T13:23:01.734580Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义变换距离类型的函数\n",
    "def get_distance_type(row):\n",
    "    # 距离未知\n",
    "    if row == -1:\n",
    "        return -1\n",
    "    # 1千米内\n",
    "    elif row >= 0 and row <= 2:\n",
    "        return 0\n",
    "    # 1.5-2.5千米内\n",
    "    elif row >= 3 and row <= 5:\n",
    "        return 1\n",
    "    # 3-4.5千米内\n",
    "    elif row >= 6 and row <= 9:\n",
    "        return 2\n",
    "    # 5千米\n",
    "    elif row == 10:\n",
    "        return 3\n",
    "# 构建距离类型的特征属性\n",
    "new_data['Distance_type'] = new_data['Distance'].apply(get_distance_type)\n",
    "new_test_data['Distance_type'] = new_test_data['Distance'].apply(get_distance_type)\n",
    "# 新距离类型分布情况\n",
    "new_data['Distance_type'].value_counts()\n",
    "new_test_data['Distance_type'].value_counts()\n",
    "'''\n",
    " 0    84309\n",
    "-1    13858\n",
    " 3    13321\n",
    " 1    11194\n",
    " 2     6108\n",
    "Name: Distance_type, dtype: int64\n",
    "'''"
   ],
   "id": "62ee9dc121b1531f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'\\n 0    84309\\n-1    13858\\n 3    13321\\n 1    11194\\n 2     6108\\nName: Distance_type, dtype: int64\\n'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 22
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:01.996228Z",
     "start_time": "2024-09-20T13:23:01.807782Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 距离柱状图\n",
    "x1 = np.arange(-1,4)\n",
    "dis_type1 = np.array(new_data['Distance_type'].value_counts().sort_index())\n",
    "dis_type2 = np.array(new_test_data['Distance_type'].value_counts().sort_index())\n",
    "plt.bar(x1,dis_type1,tick_label=x1, label='off_train_data', width=0.3)\n",
    "plt.bar(x1+0.3,dis_type2,label='off_test_data',width=0.3)\n",
    "plt.xlabel('距离类型')\n",
    "plt.ylabel('计数')\n",
    "plt.title('距离类型计数分布情况')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "# 跟距离相关的独热编码\n",
    "def Get_dis_hot(df):\n",
    "    discols = ['Distance' + str(i) for i in range(-1,11)]\n",
    "    tmpdf = pd.get_dummies(df['Distance'].replace('null', np.nan))\n",
    "    tmpdf.columns = discols\n",
    "    df[discols] = tmpdf\n",
    "    return df\n",
    "new_data = Get_dis_hot(new_data)\n",
    "new_test_data = Get_dis_hot(new_test_data)"
   ],
   "id": "e085602bec2703e5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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WL58OXJzcwEAFy9exH/+859Kl92fO3cOWq0WP/zwgzCttLQUDz74INauXQu1Wo177rkHPj4+sLe3h0ajAVB+j6LRo0dDqVTCYrGgqKgI48ePxxtvvFGH3w4R3SkGISKSvNOnT+Obb76Bvb39LeeruEQ9JSUF7733Ht566y0kJCQgNzcXv//+O86ePSvcJLFCixYtrAZLA0BSUhJWr14Ng8GAmTNnolevXlWur3379jh27JjVtD59+uDrr7/GQw89VMNPSURiYBAiIsnJzs7G6dOncfToUZw/fx7u7u7o3LkzAgICql3GYrEIV2k1b94cAwYMgMVigZubGzp16oQXXnhBuGGiXq+vdszQd999h0WLFuHLL7+ERqPBm2++iZCQEIwdO9ZqULbZbK7RAGiTySScQiMi6WAQIiLJ0ev1cHd3x8svv4wePXoIA43379+Po0ePonv37lbzFxUVYeHChcIjMDp16oQlS5ZUet9nn30WgwYNwrVr17Bw4UIA5VeZpaWl4dChQ/j+++/h6OiIVatWoU2bNgCAb7/9Fh9++CH69OmDwYMH44knnkD37t2xZMkSrFy5Eo6OjlbrMBqNGDlypNW00tJS6HQ6/PLLL7XzBRFRreFgaSKSlX8fyTEajXj11Vdx//33Y9CgQcKVav924MABfPvtt+jfvz+CgoLqq1wiqmMMQkRERCRbvMMXERERyRaDEBEREckWgxARERHJFoMQERERyRaDEBEREckWgxARERHJFoMQERERyRaDEBEREckWgxARERHJ1v8D/V8/FlsEU0AAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 23
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:02.059090Z",
     "start_time": "2024-09-20T13:23:01.996228Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 集成新的数据集后，对缺失值处理\n",
    "new_data = new_data.fillna(-1)\n",
    "new_test_data = new_test_data.fillna(-1)\n",
    "new_data.isnull().sum()\n",
    "new_test_data.isnull().sum()"
   ],
   "id": "c23b49e14ff8c82c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "User_id                     0\n",
       "Merchant_id                 0\n",
       "Coupon_id                   0\n",
       "Discount_rate               0\n",
       "Distance                    0\n",
       "Date_received               0\n",
       "Dis_rate                    0\n",
       "Discount_type               0\n",
       "Discount_man                0\n",
       "Discount_jian               0\n",
       "Weekday                     0\n",
       "Is_weekend                  0\n",
       "weekday1                    0\n",
       "weekday2                    0\n",
       "weekday3                    0\n",
       "weekday4                    0\n",
       "weekday5                    0\n",
       "weekday6                    0\n",
       "weekday7                    0\n",
       "rec_coupon                  0\n",
       "Coupon_popu                 0\n",
       "Merchant_popu               0\n",
       "merchant_min_distance       0\n",
       "merchant_max_distance       0\n",
       "merchant_mean_distance      0\n",
       "merchant_median_distance    0\n",
       "Distance_type               0\n",
       "Distance-1                  0\n",
       "Distance0                   0\n",
       "Distance1                   0\n",
       "Distance2                   0\n",
       "Distance3                   0\n",
       "Distance4                   0\n",
       "Distance5                   0\n",
       "Distance6                   0\n",
       "Distance7                   0\n",
       "Distance8                   0\n",
       "Distance9                   0\n",
       "Distance10                  0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 24
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:06.169597Z",
     "start_time": "2024-09-20T13:23:02.059090Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 再次保存最终文件，方便下次直接读取进行预测操作\n",
    "new_data.to_csv('./final_new_data.csv')\n",
    "new_test_data.to_csv('./final_new_test_data.csv')\n",
    "# 读取最终保存的文件\n",
    "new_data = pd.read_csv('./final_new_data.csv',index_col=0)\n",
    "new_test_data = pd.read_csv('./final_new_test_data.csv',index_col=0)"
   ],
   "id": "6ba17cd8ef072dc6",
   "outputs": [],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:06.241960Z",
     "start_time": "2024-09-20T13:23:06.170599Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 查看属性特征\n",
    "new_data.columns\n",
    "new_test_data.columns\n",
    "# 选取要预测的特征\n",
    "features = ['Dis_rate','Discount_type','Discount_man', 'Discount_jian',\n",
    "            'Distance','Distance_type','Distance-1', 'Distance0',\n",
    "            'Distance1', 'Distance2', 'Distance3', 'Distance4', 'Distance5',\n",
    "            'Distance6', 'Distance7', 'Distance8', 'Distance9', 'Distance10',\n",
    "            'rec_coupon','Coupon_popu','Merchant_popu','merchant_min_distance',\n",
    "            'merchant_max_distance','merchant_mean_distance','merchant_median_distance',\n",
    "            'Is_weekend','Weekday','weekday1','weekday2','weekday3','weekday4',\n",
    "            'weekday5','weekday6','weekday7']\n",
    "# 提取指定特征属性的数据集，并且划分为训练集和验证集\n",
    "X = new_data[features]\n",
    "y = new_data['label']\n",
    "# stratify=y 确保训练集和测试集中各类别的比例与原始数据集相同，这在处理不平衡数据时尤为重要\n",
    "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,stratify=y)"
   ],
   "id": "bd4550c519a56855",
   "outputs": [],
   "execution_count": 26
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:23:07.363889Z",
     "start_time": "2024-09-20T13:23:06.242962Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 相关性分析\n",
    "# 相关性分析有助于识别变量之间的关系，帮助你理解数据特征的相互影响。它可以用于特征选择，排除冗余特征，提升模型性能。此外，它还能揭示潜在的因果关系，为后续的深入分析和建模提供指导\n",
    "corr = X.corr(method = 'pearson')  # 计算相关系数矩阵\n",
    "print('相关系数矩阵为：\\n',np.round(corr, 2))  # 保留两位小数\n",
    "# 绘制相关性热力图\n",
    "plt.subplots(figsize=(10, 10))  # 设置画面大小\n",
    "sns.heatmap(corr, annot=True, vmax=1, square=True, cmap=\"Blues\")\n",
    "plt.title('相关性热力图')\n",
    "plt.show()"
   ],
   "id": "fb942ddc34ac64e",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "相关系数矩阵为：\n",
      "                           Dis_rate  Discount_type  Discount_man  \\\n",
      "Dis_rate                      1.00          -0.16          0.22   \n",
      "Discount_type                -0.16           1.00          0.20   \n",
      "Discount_man                  0.22           0.20          1.00   \n",
      "Discount_jian                -0.16           0.22          0.83   \n",
      "Distance                      0.01           0.03          0.21   \n",
      "Distance_type                 0.00           0.04          0.18   \n",
      "Distance-1                    0.05          -0.08         -0.02   \n",
      "Distance0                    -0.04           0.04         -0.21   \n",
      "Distance1                    -0.02           0.01          0.03   \n",
      "Distance2                     0.00          -0.01          0.06   \n",
      "Distance3                     0.01          -0.00          0.06   \n",
      "Distance4                     0.01           0.00          0.06   \n",
      "Distance5                     0.00           0.00          0.05   \n",
      "Distance6                     0.00           0.01          0.04   \n",
      "Distance7                     0.00           0.00          0.04   \n",
      "Distance8                     0.00           0.01          0.04   \n",
      "Distance9                     0.01           0.00          0.04   \n",
      "Distance10                    0.01           0.02          0.14   \n",
      "rec_coupon                    0.08          -0.06         -0.12   \n",
      "Coupon_popu                   0.03           0.14          0.32   \n",
      "Merchant_popu                -0.05           0.11          0.45   \n",
      "merchant_min_distance         0.02           0.03         -0.01   \n",
      "merchant_max_distance        -0.21           0.13          0.14   \n",
      "merchant_mean_distance        0.03           0.04          0.37   \n",
      "merchant_median_distance      0.05           0.02          0.30   \n",
      "Is_weekend                    0.03           0.00          0.07   \n",
      "Weekday                       0.02           0.00          0.08   \n",
      "weekday1                     -0.01           0.01         -0.03   \n",
      "weekday2                      0.00          -0.01         -0.05   \n",
      "weekday3                     -0.01          -0.01         -0.05   \n",
      "weekday4                      0.04          -0.01          0.02   \n",
      "weekday5                     -0.05           0.01          0.01   \n",
      "weekday6                      0.00          -0.01          0.05   \n",
      "weekday7                      0.03           0.01          0.04   \n",
      "\n",
      "                          Discount_jian  Distance  Distance_type  Distance-1  \\\n",
      "Dis_rate                          -0.16      0.01           0.00        0.05   \n",
      "Discount_type                      0.22      0.03           0.04       -0.08   \n",
      "Discount_man                       0.83      0.21           0.18       -0.02   \n",
      "Discount_jian                      1.00      0.22           0.19       -0.02   \n",
      "Distance                           0.22      1.00           0.97       -0.30   \n",
      "Distance_type                      0.19      0.97           1.00       -0.45   \n",
      "Distance-1                        -0.02     -0.30          -0.45        1.00   \n",
      "Distance0                         -0.21     -0.52          -0.33       -0.32   \n",
      "Distance1                          0.03     -0.10          -0.14       -0.13   \n",
      "Distance2                          0.05      0.01          -0.09       -0.09   \n",
      "Distance3                          0.06      0.07           0.11       -0.07   \n",
      "Distance4                          0.05      0.11           0.10       -0.06   \n",
      "Distance5                          0.05      0.14           0.08       -0.05   \n",
      "Distance6                          0.04      0.16           0.19       -0.05   \n",
      "Distance7                          0.04      0.17           0.17       -0.04   \n",
      "Distance8                          0.04      0.19           0.15       -0.04   \n",
      "Distance9                          0.04      0.20           0.14       -0.03   \n",
      "Distance10                         0.15      0.82           0.82       -0.12   \n",
      "rec_coupon                        -0.13     -0.12          -0.09       -0.02   \n",
      "Coupon_popu                        0.21      0.07           0.08       -0.12   \n",
      "Merchant_popu                      0.31      0.05           0.05       -0.11   \n",
      "merchant_min_distance             -0.01      0.15           0.15       -0.09   \n",
      "merchant_max_distance              0.19      0.21           0.23       -0.25   \n",
      "merchant_mean_distance             0.40      0.52           0.48       -0.11   \n",
      "merchant_median_distance           0.35      0.48           0.44       -0.07   \n",
      "Is_weekend                         0.07      0.04           0.03        0.01   \n",
      "Weekday                            0.07      0.02           0.01        0.01   \n",
      "weekday1                          -0.02      0.04           0.04       -0.01   \n",
      "weekday2                          -0.04     -0.03          -0.03       -0.00   \n",
      "weekday3                          -0.04     -0.04          -0.03       -0.00   \n",
      "weekday4                          -0.00     -0.02          -0.02        0.01   \n",
      "weekday5                           0.01     -0.00          -0.00       -0.01   \n",
      "weekday6                           0.06      0.01           0.01        0.02   \n",
      "weekday7                           0.03      0.04           0.04       -0.00   \n",
      "\n",
      "                          Distance0  Distance1  Distance2  ...  \\\n",
      "Dis_rate                      -0.04      -0.02       0.00  ...   \n",
      "Discount_type                  0.04       0.01      -0.01  ...   \n",
      "Discount_man                  -0.21       0.03       0.06  ...   \n",
      "Discount_jian                 -0.21       0.03       0.05  ...   \n",
      "Distance                      -0.52      -0.10       0.01  ...   \n",
      "Distance_type                 -0.33      -0.14      -0.09  ...   \n",
      "Distance-1                    -0.32      -0.13      -0.09  ...   \n",
      "Distance0                      1.00      -0.35      -0.24  ...   \n",
      "Distance1                     -0.35       1.00      -0.10  ...   \n",
      "Distance2                     -0.24      -0.10       1.00  ...   \n",
      "Distance3                     -0.19      -0.08      -0.05  ...   \n",
      "Distance4                     -0.16      -0.07      -0.04  ...   \n",
      "Distance5                     -0.14      -0.06      -0.04  ...   \n",
      "Distance6                     -0.12      -0.05      -0.03  ...   \n",
      "Distance7                     -0.10      -0.04      -0.03  ...   \n",
      "Distance8                     -0.10      -0.04      -0.03  ...   \n",
      "Distance9                     -0.09      -0.04      -0.02  ...   \n",
      "Distance10                    -0.32      -0.13      -0.09  ...   \n",
      "rec_coupon                     0.15      -0.04      -0.03  ...   \n",
      "Coupon_popu                   -0.02       0.05       0.03  ...   \n",
      "Merchant_popu                 -0.02       0.06       0.04  ...   \n",
      "merchant_min_distance         -0.06      -0.01       0.01  ...   \n",
      "merchant_max_distance         -0.05       0.05       0.05  ...   \n",
      "merchant_mean_distance        -0.39       0.00       0.07  ...   \n",
      "merchant_median_distance      -0.35      -0.03       0.05  ...   \n",
      "Is_weekend                    -0.04      -0.00       0.01  ...   \n",
      "Weekday                       -0.03       0.00       0.01  ...   \n",
      "weekday1                      -0.02      -0.01       0.00  ...   \n",
      "weekday2                       0.03      -0.00      -0.01  ...   \n",
      "weekday3                       0.03       0.00      -0.00  ...   \n",
      "weekday4                       0.01       0.00      -0.00  ...   \n",
      "weekday5                      -0.00       0.01       0.01  ...   \n",
      "weekday6                      -0.02       0.00      -0.00  ...   \n",
      "weekday7                      -0.03      -0.01       0.01  ...   \n",
      "\n",
      "                          merchant_median_distance  Is_weekend  Weekday  \\\n",
      "Dis_rate                                      0.05        0.03     0.02   \n",
      "Discount_type                                 0.02        0.00     0.00   \n",
      "Discount_man                                  0.30        0.07     0.08   \n",
      "Discount_jian                                 0.35        0.07     0.07   \n",
      "Distance                                      0.48        0.04     0.02   \n",
      "Distance_type                                 0.44        0.03     0.01   \n",
      "Distance-1                                   -0.07        0.01     0.01   \n",
      "Distance0                                    -0.35       -0.04    -0.03   \n",
      "Distance1                                    -0.03       -0.00     0.00   \n",
      "Distance2                                     0.05        0.01     0.01   \n",
      "Distance3                                     0.07        0.01     0.01   \n",
      "Distance4                                     0.08        0.00     0.00   \n",
      "Distance5                                     0.09        0.01     0.00   \n",
      "Distance6                                     0.09        0.00     0.00   \n",
      "Distance7                                     0.09        0.00     0.00   \n",
      "Distance8                                     0.09        0.01     0.00   \n",
      "Distance9                                     0.09        0.00    -0.00   \n",
      "Distance10                                    0.37        0.03     0.02   \n",
      "rec_coupon                                   -0.11       -0.02    -0.02   \n",
      "Coupon_popu                                   0.01        0.02     0.03   \n",
      "Merchant_popu                                -0.07       -0.01     0.03   \n",
      "merchant_min_distance                         0.29        0.00     0.00   \n",
      "merchant_max_distance                         0.23        0.03     0.02   \n",
      "merchant_mean_distance                        0.92        0.06     0.02   \n",
      "merchant_median_distance                      1.00        0.06     0.02   \n",
      "Is_weekend                                    0.06        1.00     0.79   \n",
      "Weekday                                       0.02        0.79     1.00   \n",
      "weekday1                                      0.06       -0.28    -0.64   \n",
      "weekday2                                     -0.03       -0.25    -0.39   \n",
      "weekday3                                     -0.05       -0.26    -0.21   \n",
      "weekday4                                     -0.04       -0.26    -0.02   \n",
      "weekday5                                     -0.03       -0.29     0.19   \n",
      "weekday6                                      0.02        0.62     0.38   \n",
      "weekday7                                      0.06        0.66     0.62   \n",
      "\n",
      "                          weekday1  weekday2  weekday3  weekday4  weekday5  \\\n",
      "Dis_rate                     -0.01      0.00     -0.01      0.04     -0.05   \n",
      "Discount_type                 0.01     -0.01     -0.01     -0.01      0.01   \n",
      "Discount_man                 -0.03     -0.05     -0.05      0.02      0.01   \n",
      "Discount_jian                -0.02     -0.04     -0.04     -0.00      0.01   \n",
      "Distance                      0.04     -0.03     -0.04     -0.02     -0.00   \n",
      "Distance_type                 0.04     -0.03     -0.03     -0.02     -0.00   \n",
      "Distance-1                   -0.01     -0.00     -0.00      0.01     -0.01   \n",
      "Distance0                    -0.02      0.03      0.03      0.01     -0.00   \n",
      "Distance1                    -0.01     -0.00      0.00      0.00      0.01   \n",
      "Distance2                     0.00     -0.01     -0.00     -0.00      0.01   \n",
      "Distance3                     0.00     -0.01     -0.01     -0.00     -0.00   \n",
      "Distance4                     0.01     -0.00     -0.01     -0.00      0.00   \n",
      "Distance5                     0.01     -0.01     -0.01     -0.00      0.00   \n",
      "Distance6                     0.01     -0.01     -0.01     -0.00      0.00   \n",
      "Distance7                     0.01     -0.01     -0.00     -0.01      0.00   \n",
      "Distance8                     0.01     -0.00     -0.01     -0.01     -0.00   \n",
      "Distance9                     0.01     -0.01     -0.01      0.00     -0.00   \n",
      "Distance10                    0.03     -0.02     -0.03     -0.02     -0.01   \n",
      "rec_coupon                   -0.00      0.02      0.02      0.01     -0.01   \n",
      "Coupon_popu                   0.00     -0.02     -0.01     -0.00      0.00   \n",
      "Merchant_popu                -0.02     -0.03     -0.02      0.02      0.07   \n",
      "merchant_min_distance        -0.00     -0.00     -0.00      0.00      0.00   \n",
      "merchant_max_distance         0.02     -0.02     -0.02     -0.02      0.00   \n",
      "merchant_mean_distance        0.06     -0.04     -0.06     -0.04     -0.01   \n",
      "merchant_median_distance      0.06     -0.03     -0.05     -0.04     -0.03   \n",
      "Is_weekend                   -0.28     -0.25     -0.26     -0.26     -0.29   \n",
      "Weekday                      -0.64     -0.39     -0.21     -0.02      0.19   \n",
      "weekday1                      1.00     -0.16     -0.16     -0.16     -0.18   \n",
      "weekday2                     -0.16      1.00     -0.14     -0.14     -0.16   \n",
      "weekday3                     -0.16     -0.14      1.00     -0.15     -0.17   \n",
      "weekday4                     -0.16     -0.14     -0.15      1.00     -0.17   \n",
      "weekday5                     -0.18     -0.16     -0.17     -0.17      1.00   \n",
      "weekday6                     -0.18     -0.15     -0.16     -0.16     -0.18   \n",
      "weekday7                     -0.19     -0.17     -0.17     -0.17     -0.19   \n",
      "\n",
      "                          weekday6  weekday7  \n",
      "Dis_rate                      0.00      0.03  \n",
      "Discount_type                -0.01      0.01  \n",
      "Discount_man                  0.05      0.04  \n",
      "Discount_jian                 0.06      0.03  \n",
      "Distance                      0.01      0.04  \n",
      "Distance_type                 0.01      0.04  \n",
      "Distance-1                    0.02     -0.00  \n",
      "Distance0                    -0.02     -0.03  \n",
      "Distance1                     0.00     -0.01  \n",
      "Distance2                    -0.00      0.01  \n",
      "Distance3                     0.01      0.01  \n",
      "Distance4                    -0.00      0.01  \n",
      "Distance5                     0.01      0.00  \n",
      "Distance6                     0.00      0.00  \n",
      "Distance7                    -0.00      0.00  \n",
      "Distance8                     0.01      0.01  \n",
      "Distance9                     0.00      0.00  \n",
      "Distance10                    0.01      0.03  \n",
      "rec_coupon                   -0.01     -0.02  \n",
      "Coupon_popu                  -0.02      0.05  \n",
      "Merchant_popu                -0.03      0.01  \n",
      "merchant_min_distance         0.00      0.00  \n",
      "merchant_max_distance         0.00      0.03  \n",
      "merchant_mean_distance        0.03      0.05  \n",
      "merchant_median_distance      0.02      0.06  \n",
      "Is_weekend                    0.62      0.66  \n",
      "Weekday                       0.38      0.62  \n",
      "weekday1                     -0.18     -0.19  \n",
      "weekday2                     -0.15     -0.17  \n",
      "weekday3                     -0.16     -0.17  \n",
      "weekday4                     -0.16     -0.17  \n",
      "weekday5                     -0.18     -0.19  \n",
      "weekday6                      1.00     -0.19  \n",
      "weekday7                     -0.19      1.00  \n",
      "\n",
      "[34 rows x 34 columns]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6QAAAOBCAYAAADm3m1YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3xT1fvA8U+S7qaltAU6gJbVsGeVIVWmbGRKFQERRMCNX0EEFUQRRJAlS4WfKEPEyhQKyioKtCB779LdQvdKm+T3RyA0tLRFLxbkeb9efUFzz33y3HNHenLOPVdlMplMCCGEEEIIIYQQ/zJ1WScghBBCCCGEEOLRJA1SIYQQQgghhBBlQhqkQgghhBBCCCHKhDRIhRBCCCGEEEKUCWmQCiGEEEIIIYQoE9IgFUIIIYQQQghRJqRBKoQQQgghhBCiTEiDVAghhBBCCCFEmZAGqRBCCCGEEEKIMiENUiGEEEIIIYQQZUIapEIIIYQQQgjxiEhOTqZdu3ZERUWVqnx4eDhdunShefPmLFu2TPF8pEEqhBBCCCGEEI+AGzduMHLkSKKjo0tdftSoUXTr1o0ff/yRjRs3sn//fkVzkgapEEIIIYQQQjwCxowZQ9euXUtdfsOGDVSoUIFXX30Vf39/Ro8ezdq1axXNSRqkQgghhBBCCPGQ0uv1ZGRkWP3o9foiy06ZMoUhQ4aUOvbZs2dp0aIFKpUKgIYNG3Lq1ClF8r7FRtFoQgghhBBCCPEf5NjktbJOoUifv6Rj/vz5Vq+99tprvP7664XKVqlS5Z5iZ2RkUKNGDcvvWq2W+Pj4v5foXUiDVAghhBBCCCEeUq+88gpDhw61es3Ozk6R2BqNxiqWvb09OTk5isS+RRqkQgghhBBCCPGQsrOzU6wBeqdy5cpx48YNy++ZmZnY2toq+h7SIBVCCCGEEEKIkqgevel3GjRowObNmy2/nz59mkqVKin6Ho9erQohhBBCCCGEsMjIyCAvL6/Q6+3atePQoUPs37+f/Px8li5dSuvWrRV9b2mQCiGEEEIIIcQjrGfPnuzevbvQ6+7u7owbN47hw4fTunVrzp8/z6hRoxR9b5XJZDIpGlEIIYQQQggh/mMcm71Z1ikUKfvQnPv+HlevXuXixYs8/vjjaLVaRWPLPaRCCCGEEEIIIe7Kz88PPz+/+xJbhuwKIYQQQgghhCgT0kMqhBBCCCGEECV5BGfZ/TdIrQohhBBCCCGEKBPSIBVCCCGEEEIIUSZkyK4QQgghhBBClESlKusM/pOkh1QIIYQQQgghRJmQBqkQQgghhBBCiDIhQ3aFEEIIIYQQoiQyy+59IbUqhBBCCCGEEKJMSINUCCGEEEIIIUSZkCG7QgghhBBCCFESmWX3vpAeUiGEEEIIIYQQZUIapEIIIYQQQgghyoQM2RVCCCGEEEKIksgsu/eF1KoQQgghhBBCiDIhDVIhhBBCCCGEEGVChuwKIYQQQgghRElklt37QnpIhRBCCCGEEEKUCWmQCiGEEEIIIYQoEzJkVwghhBBCCCFKIrPs3hdSq0IIIYQQQgghyoQ0SIUQQgghhBBClAkZsiuEEEIIIYQQJZFZdu8L6SEVQgghhBBCCFEmpEEqhBBCCCGEEKJMyJBdIYQQQgghhCiJzLJ7X0itCiGEEEIIIYQoE9IgFUIIIYQQQghRJmTIrhBCCCGEEEKURGbZvS+kh1QIIYQQQgghRJmQBqkQQgghhBBCiDIhQ3aFEEIIIYQQoiQyy+59IbUqhBBCCCGEEKJMSINUCCGEEEIIIUSZkCG7QgghhBBCCFESGbJ7X0itCiGEEEIIIYQoE9IgFUIIIYQQQghRJmTIrhBCCCGEEEKURK0q6wz+k6SHVAghhBBCCCFEmZAGqRBCCCGEEEKIMiFDdoUQQgghhBCiJDLL7n0htSqEEEIIIYQQokxIg1QIIYQQQgghRJmQIbtCCCGEEEIIURKVzLJ7P0gPqRBCCCGEEEKIMiENUiGEEI+8kydPMn369H8UIzs7m/j4+EKvHzlypMR1c3Nzyc3N/Ufv/9NPP/HJJ58Uev3//u//uHTp0j3H2759Oy+99BJxcXH/KC8hhBCiODJkVwghxCMvMjKS77//nnHjxgHmxmXjxo3vWv6jjz7i+eeft3rtgw8+4NKlS6xevRo7OzsArl+/zvPPP8+wYcN455137hpv3LhxGI1G5s6dW2jZsWPHGDVqFBs3bsTd3f2uMdLS0oiNjS30+i+//EJeXh7Vq1e/67pFyczM5I8//sDGpuQ/FSIiInjhhRfuKT7Axo0bCQgIuOf1hBCiTMgsu/eFNEiFEEI88mxsbKwaXra2tgDMmzePJk2aWJXt16+fZXlBr732Gj169GD+/PmMGTMGMDe47O3tGTRoULHvb2tri9FotPweGRnJq6++ytKlS1Gr1SQlJRX5ngA5OTnY2tqi0WjQaDTk5+djNBrR6/VkZWVhNBoxGo2cP3+erKwsqlevjouLS4l1cuv9HBwcSiyr0WgA2L9/P05OTgCkp6ezevVqgoODC71ffHw8HTt2tDTchRBCPLqkQSqEEOKRtXLlStRqNWfPnsVgMLBmzRry8vJo0aIFAOXKlaNChQpW62g0GqvGa05ODnZ2dvj7+/Pmm29SpUoVAEwmE6tWrWLIkCFUrFjR0ki0t7dHdXNiDL1ej42NDba2tmRlZfHDDz8wcOBATp48SXJyMhUqVCApKQkAtVptWUelUlkajL169eLy5cuoVCpMJhP16tVj4MCBpKenc+jQIRITE1mxYgW//vorZ86c4ddffy3UQMzJyUGtVmNjY2N5n1tK00N6q4ydnR329vYALFiwgKVLl9KmTRur97Ozs7M0RG81ZIUQQjy6pEEqhBDikRUaGorRaOTKlSsYDAY2bdqEwWCgSpUqxTaWbjXa8vPzadSoUbHvsXDhQhYuXGj5fe/evZZG7vLly9m3bx9eXl7Y2tqyaNEi/P39OX36NImJieh0Ost6TZs2tfz/s88+o0+fPgCsX78eGxsbvv/+e/766y/mzJlDfn6+pcHavXt33nrrLXQ6HR06dCjUwAYYOXIk+/btKzL/u21f9+7dmTlzJlC40Xr27FmWLl2KXq+nb9++ltdr1qzJhg0bLL+rZMZKIcTDRK5Z94U0SIUQQjyyvvvuOwCCg4PJyMhg+fLlVssHDx5c7Po2NjZs3boVe3t7q57FN998k2bNmlmtbzAYyM3NpXz58pbXoqKiqFy5Mvn5+Wg0Grp27covv/zC5cuX+d///kevXr24cOECL774Ir/99hsODg7k5eXh6upqiXGrRxLM933+9ttv2Nrakp+fj06nIykpCS8vL0wmEwDOzs6FtmP69Onk5+db9ZCuWrWKJUuWsGPHjkINx169euHm5mb5veDy5ORk3nzzTfR6PcuWLaNVq1acOHGCQYMGMXXqVOkVFUIIYUUapEIIIR5pOTk5nDhxAltbW44dO0aDBg0sDawlS5YQGBhoVb579+5Wv1erVq1QTDs7O7RaLV5eXsW+9+XLl2nbti3nz58HYNCgQZw8eZK3336buXPnWg3ZdXd3L9SYzM7OZtmyZVy8eJGDBw+SlJREdnY2Q4cO5Y8//uCdd94hPz+fgIAAkpOTAXPD+M5GYaVKlQrllpGRgY+PDxUrViyyzgo2iguaNWsWbm5ufPnll7z++uu8/vrrLF26lIkTJ5bYmyyEEOLRI1NFCSGEeKTt2LGDvLw89Ho9r732GgsWLLAsc3BwwNnZ2epHqWGmJpOJkydPWs0yW6VKFWJiYmjWrBmVK1cuMYajoyNHjx6lQoUKtGrVivbt27Ny5Uo6duzIpEmT6Ny5M/n5+UyYMAEHBwfUajXJycno9foSY58/f77IxjZAVlYW5cqVK3LZxIkTWbJkCS1atKBu3bp89tlneHp60qxZsxLfUwghHmgq9YP585CTHlIhhBCPtDVr1uDt7U1sbCxTpkxh1KhRPP7446Va99ZzR++cCCgvL4/k5GQuXrxY6PW8vDwaNGiAyWRi1qxZNGzYkM2bN1vKvPTSS3Tr1o3jx4/j6OhIdHQ0AFeuXMHOzo7s7GwCAgIss98uXrwYMD9v9K+//rLESUpKYteuXXz44Yf89NNPvP3221SvXp1Dhw5x9epVIiMj+eyzz4rcLr1ez7Fjxxg2bFihZZmZmRiNxiJ7SHNzc9m2bRv79u1j+/btBAUFsXLlSn788Ue6du1Ko0aNaNKkCT179iyxboUQQjwapEEqhBDikXXs2DH279/PW2+9xZdffslTTz1F3759LcNkS7qH9PXXX+fixYuFJvVJS0vj+PHjVhP4gLmhZ2dnx4EDB1Cr1Tz55JNFxr106RIvv/wyTk5Olns/X3rpJYxGI9nZ2WzYsMHyXNGcnBz++usvjh49iqOjI2BuGL711ls0aNCAgQMH0r17dy5evMjevXuZO3cuJpOJ4ODgu27Xb7/9RkZGBh07diy0LD09HaDIBqmdnR27d+/G09OTVatW8f333/P5558THBzMsGHD2LZtG1euXLG6/1QIIcSjTRqkQgghHkn5+fl8+umnPPXUU9SsWdPy+pQpUwB45513mD17dqHnkA4YMMDy/zVr1hSKe/bsWZ555hlUKhXffPMNDRo0uOfcWrZsyYkTJwA4ffo0vXr1YseOHUVOSGRvb8+UKVOws7Pj/fffB2D8+PHExcVZ8itXrhxNmzalbt26JCcnExcXZ7UdBen1eubMmUPz5s2pVatWoeW37kUtqlGpUqmYPXs2AEajkbfeeovVq1czffp0hgwZwuuvvw5AXFzcvVWIEEI8CGSW3ftCGqRCCCEeSQaDAWdnZyZOnMjZs2eLLOPu7l5oYqLiZok1Go3MmDGDZs2aUbVqVd58802WL19eqvtB/y6VSsWkSZNo1qyZpaf2ww8/JC0tDXd3dy5evEiNGjUAOH78OHZ2dlaPoSnIZDLx4YcfEh0dzaxZs4osk5iYCICnp2exeQ0dOhSDwUDHjh1ZvXp1kZMjCSGEEA//XbBCCCHE32Bvb88333xDlSpVilxuNBrvuq7BYCiy/MSJEzly5AgfffQRH3zwAa6urvTr1489e/YolvedEhMTefnll1m/fj0Ab7zxBuvWraNq1aokJSXRo0cPIiIiAPNsuitWrODPP/8sFEev1/P+++/zyy+/MG7cOOrVq1fk+x05cgSNRoO3t7fltaLqY8KECbRq1YpVq1bRpUsX/u///q9QmVvDkYUQQjy6pIdUCCHEI+vWZES3GlS3nsVpMpkwmUx3vYf0zgbYiRMnmDRpElFRUSxdutQyc+7y5ct55ZVXePnll2nevDlDhgyhVatWlns9b7n1fgCpqalkZ2djZ2cHmO9HBUhJSSE3NxeDwUBeXh4+Pj4ALFy4kKpVq9KrVy8AGjZsyKpVq3jxxRfx9PQkKCiIb7/9lscee4yqVavy/PPP8+mnn7JhwwZLb+/Ro0f58MMPOXfuHOPGjWPQoEFW+f32229s3bqVhIQEwsPDadmypdXzT2/VR0JCgmXbXF1d6dOnD3369CE8PBwfHx/LUN1bvaz5+fkl7CEhhHiA/AdmtH0QSYNUCCHEIy83Nxcw9xLa2NhYHotyt3tI8/LyAPj5559Zt24dERERPP300yxevBgPDw9LWVdXV5YvX84333zDwoULOXDgAJUqVeLXX39Fq9Vayun1ekuP7PLly5k/fz62traWR8zY2dnRuXNnwNyIc3Bw4PDhw1y7do0ff/yR2bNnWxqXPXv2ZPbs2Zahus8++ywzZ84kOzsbR0dHRowYwZYtWzh//jy1a9cmMTGR//3vf2RlZbFo0SKeeuqpQvVTvXp1fv31V6pUqcKzzz7Lq6++arX8VoP0Vo6lVVTPqhBCiEeLyiTjZYQQQjzisrKyuHHjBr6+vqhUKkwmE9HR0VSoUMGqJ/BOq1atYvfu3YwcOZLGjRsX+x6JiYn8+OOPVKtWjW7dulkte+uttzAYDMybNw+DwYBarS72eae3enIBzpw5g06nsyqfkZFhafCaTKZCsQquD+bH19ja2uLu7l6q97xTREQEL7zwAn/99VeREy/dKS4ujqeeeor169dTu3btEssLIcSDwLFz0ffWl7XsrWPKOoV/RBqkQgghhPhHcnNzSUxMtDTohRDiv8ixy5dlnUKRsre8XdYp/CMyZFcIIYQQ/4i9vf19nUlYCCHEf5fcmSuEEEIIIYQQokxID6kQQgghhBBClERm2b0vpFaFEEIIIYQQQpQJaZAKIYQQQgghhCgTMmRXPDIcm7ymSJx1Kz5SJA7A2hPxisTpW6+SInEupmQqEkej4Fdd6blGReJU1NoqEiffqMzE5HkGZbYLQKGUFKOWSVZLpNQ+U2qe/JScfGUCAS72GkXiuDsqc84m5+QpEqdRhXKKxAE4kpCqSJzcfGUOAHsbZU5aJSdYdrBR5oPEoNDJplHowpaeq9yzdys62ykSJ0OvzPmfo9Dx+FZQNUXi3Bcyi/h9IT2kQgghhBBCCCHKhDRIhRBCCCGEEEKUCWmQPiJCQkLQ6XTUqVOHNm3a8Pnnn6PX6y3Lo6Ki0Ol0ZZhh2XMv58zpTZOo6u1e1qmImzKSrxN/8RT6nKyyTgWA9OQkos+dJDf7wchH/Lsykq8Tc/4k+vu4//+N9xDifslIvk7shVNy/P7L0pOTuPYAfzZlplwn7sLdP8uLWx4fH89ff/1FRkbG/U6zdFTqB/PnISf3kD5CAgICWLZsGUeOHGHy5Mmkpqby6aefAuDj40NEREQZZ2jWrl07PvvsM5o3b/6vvaeHmzM/zxmJv69nseVsjRl88e5wEmOjaNmhB88MGY2qlPcTJMZGsW7xNL797gec7DREJedYLT/94yxsnV2p2X241etB1cvTs15FtPY2nE3IZFl4FKk37/cKql6eevapTP1wJFevXqVFhx50e2FUsTnFXL3EyvlTSYqLolGLNhzdv4tp328tsuyWRVNxdClHzcAgdi6fS2bKDewcnMjLzabek515ov9wVCoVKfHR/PjJG7wy7+dCMaLOHOO3/5tDSkIMDZ7qSvshr1st+/27uWSk3MDO0Ym8nGzqP9mZoAHD+WvrzxzYuAqn8p5kXE/g6Vc/wjugIQBn9vxK+C/L0GdloNZoaNQlmGY9XrDE3fjFu8SfP2H53VvXiKEfzgTg8I5N7Pl5OdnpqfjVaUyPkWPRlvcA4Orpo2xdOoestBRaPfM8zbv2I+HaZTYvmUHitSuYTCbKe/mSdj2BPm9/TNU6jUi8dpm1X7xP+o3rqDUaajRuTudhY0iMusy2/5tDdloqLXo+x2Nd+lny2bFyMYdCQzAZjbhV8qX/+Blo3TwsdbLt21mkJsaida9gVSfRZ4/z+3dzyUpP5fHuwTTr3Neqrs/s28G2rz/H3tmFx7oH07TT7eVRZ46x4zvzfqj/VFfaDX6dpKgrbP/2C65HX0Vja4tKpUbXvA2tnx2Orb0DAMd3/cr+dd+Tk5FKRf8AstNTSEuMQ21jS8s+Q2jWuZ9VDinx0aye8gajv/rZah8XlXPUmWOEfvMF6TcS0WhsaNS+J0EDzMfUsV2/su8X8/tWrt2ITi//z1JHu1cv4fC2XzAZjWhsbNHY2tLgqa6lqqOijsekqCts+3YmN2KuobGxwQQ07/Gc1bqHtqzlwMZVuLhXIO16PK16D+bYzs1kpafiXaMO8ZfPkq/XU7VeE+q27sjeNd8WeVzfOjcN+fmsmvQqbV4YTeXajQD4a+ta9q/7AaMhH0N+Hg3adi+wn2aSmhBDzcDWnD8YxqivQgqdawXPw6izx9i5fC7Z6akEdrt9LFyPusL2pTNJiYvCYMhj9KKNVteLc3u3cHTTCnIy0vAKaMgTQ8aQFh/NgVXzyclIo0HnZ6nbvjfJMVf4bd4HZKfeKJRHr3en46NryOGtazm1Zwu5WRnUfOxJ/Bu14I8fF5OdnkqzrgNoXOD4PLDue/76dTVGgwEXj4r0GT8Ld0dvq7g/z52Cs6sbnV+8fQ25evoom7+dTVZaCq2feZ4W3foDkHDtMv83+U1ys27fF1+5TmN6vTsNgBO7fiV8/ffkZKThW7sRHYa9Q0p8NLuWzzPn120ATQrkt/+X71n462oMBgMeFbwYN2MJ5T0qFNr2gqKvXmTex//jemI8KqB2w0BeGvMhbu63P2dS4mNY+8kbDJ+31rzO2WPs/n6eVR1dj7rCjmUzuRETCYAhP4/KtRvTftg72GjdMZlMHNu2lrN7t5KbmUH1wCep2rA5+39aQk56Ko27DKBBxz6W9wyd/xHXjodbflepNTTq2ItW/a2PzzUfv8aTz4/C9+bxWVJ+16OvgslEuUo+ZNxIpNsbk/DVNSy6bs4es6rrqvWa8fvSmaQmxFLRP4CkqEvkZqZTpU4juox4F62bByf/+I29Py0jJzMd7xp16DTsbdKuJ7B92Ryy01Np3iOYwALX2T9ClrNv3Q+F3rvfuM+pUqeRZTtXTHqVtgNHW14DLNeElPgYy7kL5ro5G76HXauWYDTk0+a5V6jTsq1lva/fGUxqYpzld7WNDU079uKp4JdRqVQkx0fzw0ev8+Kcnwrldf7ATnZ+OwN7ZxeadBlAw6f7WC2/EX2Fnctmcj3yEtWbtab9iPcA2Ld5DXt/WYGrRwVSkxIY8L8p+NVpRMK1y2xYPIPrMZGoNeY/94N6DbScIwCrZ0zg/OH9lt8r+NXEoM8lKz2VKnUaEX3upOUa3LBtN/78+f9KvK6tnfIarZ+7fdwcCf2ZiA3m65oxP496bbrz5Au35/Q4EvozhzavQlvek4wbCXR5bRLcvId06dKlLFy4EC8vL2JiYli4cCGPP/54oboTD7+Hv0ktSk2tVuPp6UmHDh2YOnUq69atIyUlxbLM1dW1bBMsQ8unDeWnrYeKL2QyUiH3MFWq6/jfjG+Ji7rCgR2/lir+9fgYlk5/n9mzZpKWnc++S8lo7TW08ncD4Mb5w6RcPo5/++es1qvp6USv+pVYeiCK9zefxVajon8jL8uyrgHleeWVkZSvXJOlP/xIWvy1YnPKz9Pz9WfjqFJDx7BxU/lr729kZxb9rePVEweJOn2Exh16sWnuR9QMDMLOwZH8vFyefH40N2IiOb13G6mJcWyY/SG5RcTJSkth/ZyP0Jb3xGQ0EnnqMNdOH7FaVuuxm3H1ubR9wRw3YvOPHNyylsFTl9D3w4U0fLovhzZ8D0DchRNErPsOY34eDTr0wd23Oid3rCfm7FEADHl6Ei6colqzIHpNmIdvnSZUaxYEwLWzx9n90//Rc9Q4Rn/5A/l5en5fuRiAzLQU1s78gLot2zJk8lxO/vE7F48e5KeZH+BW0Qdbeweq6OrzWJe+PN61P3t//o78PD1rpr9HXk4O/cd9hm+tuqQkxLD9u7mEfPkhdVq0ZeBHczj15w6unjJv94W/9nNwy1pqt2xH//FfkJlyna2LP7fUybrZH5KTZa7LgnVyePs61s/5CF2LNgRPnM2ZfTssdQkQf/kcoV9/jslk4tkJszlbYHlWWgob536E8839cO3UYa4cP8jGOR9ia+eAvaMzHj5+NOvcl7hLZ9nx3VwAos+dYN8v39Hp5XcZNPUbEq5eIDUxjkYdnsGrem2O/rbeKofUxDjWFzgWbu3jonK+ta25WRnUeuxJXCt4E33uBKf2bjO/b8h3dB7xLi/N+A5Dnp6w1V8DcPHwfv7a+jMBzdvgVK48JqMRDx+/UtVRUcfjleMHWT/7Q9x9qgImHLSuBHbpZ7VuclyU5Xgc9MkiGrbtzu7VS9C1aEObgaOIPHWY1s8OZ+Dk+eizs9g0/5Mij+tTe7dZcjm0ZQ3Xo69Yfk+Oi+Lg5jWggse6B9OoYy/O/PmbZT9V9K9Jt9c/5OyBXeizCk8+VvA8zEpLYdPcjwho3sZ8LOw3b0t+np6Ncz/ErZIv9s6uGPLyOF0gp/gLJzmy8QeeePEd+kxZiiFfT/iPC9m56GP8H3uKLu9+waXwncScPMTOhR/jWy+Qbu/Nwbt2Ex5/diQ93p+Pg7YcnlVrcjpsK8d+X0/Hl8fRZ/xM4i6c5Nd5H1Hr8Tb0ff9Lzh3YSdQZ8zl77fQRDm1aRZV6zeg97gv02VlsWfCJ1fZdPBrBlVNHaNN/qOW1zLQUfvziA+q3asvQyfM4/sfvXDl5mPw8PT9+MRFDfj7BY6dSpV5Tnhw4mm5vTAIg5twJDqxbTsfh7zJ4+v9hyNOze8UCNs+dRK3mbeg34UvO7d9J1Omb+Z0y51e3aXPGTl9EdnYWCz8bX2gfFJSXp+fLD94kLeUGQ9+aiK5BU64nxvHT0nmWMmmJcWye8wG5N8/37PQUfp03yaqOrp44xOZ5H+Hk5oHGzg53X39a9htGfp6eP9Z8A8DZP0I5uWM9bV4aS4+xM4m/eJLtCyZR47Gn6DluFhfCd1qujwDXIy/wzPtzcXavQK2WHek1YR7JMZGc+WO7pczhrT9xo8DxWVJ+rhV8sLF3wLtWPRo/3Zcmnfpy4Jfvi6yb7LQUq7o+u28H62eOp4J/LZ4a9BrR546ha9mel2cuN++bVUtIiY9h70/L6PXWJIZ+9g2unhXZvHAav3z5IbVbtuX5D+dwet8OIm9eZwF0LZ6iXEUfAEZ99TMvTFmIo0s5KvrVtJQ5+OsarkdZb2d+np71sz+kol9Nnp80z+rcTYy6zK+LptPymYH0e/cz/gj5jhux1wBITYonNTGOZp374uzmgYOzCx1efIPrMZGcCNtGSmIsITNv7++CEi6fY8e3MzCZTPR6bxbnD+wk+sztfWbI07N13iRUKjUmk5H06wmc/XM712OvsW/TGkbOWMor07+hRbf+7Prp/yznQAVfPzCBk4srLbs/azlHbom9fJ5Xpn/DqK9+5sVpS0mNj0HXog1tXxjNhUN/0qxzH16a8R367Cx+XTi1xOvakTuOm5S4KA5vWYNKBc26BdOg/TOc3febZdtS4qI4ErqW4I8XM2DyIho93Zfw9ebj5vLly3z77bds3ryZjRs38tJLLzF37twijynx8JMG6SOqZcuWqFQqTp8+Ddx9yO7evXvp0qULjRo1Ijg4mMjIyFLFHzRoECEhISxbtoy2bdvy+++/W5Zt27aNTp060bhxYwYNGkR8vHmm2WHDhqHT6YiOjmbw4MHodDqWLFliWW/Pnj306NGDwMBAJkyYYDXk+J96dcoqvlq1q9gyjoYkVKZ8er/0OhW8fekxcAT7f9tUqviLPhnLkJdHo9VqOROfQXaekfMJmbSuVh5DXi4XNn5NtY4vYOPobLWel4s9PxyK4XRCJsnZ+fxxORm/8o6WZZ99t57srEx6DnkNlUsF3n77Lfb/fvecTv21n5ysDHoPfZ2flsyiZceeRZbL1+ey8/v5tOo3jMtHD+Bczp0KVWuSp8+hzQuvEXniIC37vMjJsFA2zP6Aek92LjLOmX07cNC6En/lPK6elaj7RAdO7Am1LHMu504FP3PcdoNe48rxgzzR70XOReyhw9C3LD1i7pWrWz7EU+OiqdqwOc7lK/B4v+HUbdMdG1s7zu41x71wYAcmk4mnXhyDZ9WaPN53OBcP7ADgemwUnV96k2r1m+HqUYGGT3Ui9vI5AE7+8TvObh607v0C7l6Vad37Bf7csJLcrExadHuW7q+8S/uBIzm2eysVqprzuXw0gtzsTOoFPU21+s1o/8Jo8vP0xFw8g9bNg1a9zLFa9XqB47vNvdCn/vwdbXkPOg3/H5V1DagX9DTxN3M4s28Hhvw8qjcyfwNcsE4Ob1uHczl3mvccSHkvX1o8M9BSlwAbZn+Ao9b8pVJ5L18e7zmQkzeXn91v3g8JN/dDnSc6ELFpNbnZmRiMBgK7DaDtoNe4fCyCFr0GcenwPsDcSGo36HWq1mtq/qPNZEKlUvPkcyN56vmR2NjZW97jVg71CxwLt/ZxUTmf2bcDOwcnUKl4+qW3ad3vRRy0LpzYE0pybBTtBr+OX72muLhXMNfRlfO3Y7p5UCuwNYb8POo/1Ynr0VdLVUdFHY/hN+vBw6cq2vKedBs9gctHw63WNRoMVsdjdkYqarWG5j0HkplyHf8GgUSe/Au3Sr44lSuPSq0u8ri+FS85Lpq/tv6Mq+ft2bGNBgPVm7ZE6+bB4z0HUrVOYxy0rpb99GTwK+z6fj71n+pS5LlW8Dw8u99c74/3GIhbJfOxcCoslKvHD5KbnUnC1fM0bNfdfNyH3a6ftPgomgePxqd2E5zLe1KzZUfiL5zEsZw7Dbs8h2tFXxp2fY5joT+iz87k8WdfwaNqTZr1eYnLh/ZwZvdG6rTrhb2TM2f+/J0mnfpRqbqO8l5VqFhNh9FoJLDH87hV8iWwx0BOh5nPiUuH9mJjZ0enke/jE1Cfhh17c/3aJUteefpctiybQ/vg4Tg4ay2vn/jjd7Ru7gT1HoSHd2We7DOIw7u2cOFIONmZ6dg7OlGrcXOe6D+c8wd2WXr9U+KiaDPoNarUa4rWvQK1n3iamLMncCrnzmM383us50BO3ZHfK2M/pVbdRnTo+SxRly8UuR8suR3cR3ZWJkPemECrdl15dvibYDJx9cIZS5lNcz6kToHz5dz+nTiVc7eqo782r0KflUnV+s1oO/hN2g55k8t//UGd1k+TeMV83biw73caPt2PitV0uHlVpoK/ua6bdHuecpV8adrtecv1MTM5EZPJRGZyIvk52Tzx/Gg8KlejRd+hlv2REh/NkdCfcfG0nr29uPyadO5H+6FjaD1gBKfDtuJZpTq5WelF1s3Zm3Fu1XXV+oHkZKTTesAI8nNzaNl3KPEXT9889zsRd/k88Vcv4F2zDpX8a+HqWZH6QZ1Iir6C1s2dls+Yz/eWz7zA8T23R/tsmDuFRm27AuDgrOXIbxto2qkP9k7mz9nkuGgO3XEeAlw5Zj5PnnruFdwq+lidu8d3baVKnUY0bNOFClWq0aTDM5z64zcADm5Zi8bWDt+A+hjy9HQY8jrXTh0hqP9QTuzeSsjMD2jwVNGflVvmf4TDzet3uUq+NOvxPGf23j43I08cJDcrnZT4aFw8KlE7qBNn94ZiNBjoPnwMLjdH+VTyq0FOZjoXjoSTk5VJhcp+uLh70veND7lw+IDlHAFIu54ImKhYpRoOzlrzZ72b+fqZn5tLs859SYy8hIt7BcpV8AJUJV7XjmyzPm6MRgP+jVvg7OZBs+7P41unMQ7OrpZjzWg00GbwmzjfvLZ6VKlObqb5uDEYDEyZMoWKFSsCULt2bVJTlZmd+h8p66G5/9Ehuw//Foi/xcbGBjc3N27cKDzcqqBx48bRr18/QkNDCQgIYPbs2aV+jx9//JH9+/czZcoUmjRpAkBKSgpjxoxh1KhRbNu2DTc3NxYsWADAvHnziIiIwNvbm0WLFhEREcGLL74IQGRkJKNHj2bIkCGEhIRw8uRJvvnmm7+17UW5En29xDK2pnT06nLY3fyjxse/JnF3fLN6N69MmE6TwMc4evSo5XEP6bkGfFztidy1FmO+HpVaQ/Kl45gKPMdh7+VkDkenWX73crEnIUNvWXb85GlcKtfCzt4BZzsbfPxrEl9MTtFXLuAXUA87ewdGvD+dJ7v1K7Jc+MYVGPS5qNVqrp44SOXajbkedRmv6nXwDahPwtULeFapzo3Yq/R882NqPRZUZJzEa5cw5OXxePcBuHpUorx3FRKuXrAsq1K3MUnXLuNdow6+uttx05LiqdGkBQB5Odmc3LkB/yZPAKBr3QkAn9qNbg4XjsLNqwrXr5njRp06jFqjYc0Hw/m/13txZMtqkmOuAtC4TRdqF8j1Ruw1ylcyf4OeEHkJ/3qNLUOPfGrUJin6Kr416+BdPYBaTVtSsWp1kqKu8te29dQKbE1C5CU8ff24eHg/yfExOJUrT2pCHPZOzlStezuWdw2dpUFlY2dHzaatLMuMRhMmk9FSJwGPPYmDswuAVZ1kpCRRpUDMStV1lroE8KlVH7/6zW4fK9V1JEbermtDXh6PdRuAy839kBwbiVf1OuizMnDxqGjenzFXUavVqNTmj4b6T3amZmBrc4zIS2hsbNGW90ClUuFZpTpZqTcs7wEUOhZu7eOick68dglteQ+8a9TB1t6BStV1pCbGcT3mKvWf6kytm+9r3k9RuN3s6bCxs6NG05aW4waVBpPJWKo6Kup4vBETiXeNOtyIvUaVuo2pULU612OuWq3r4etnOR71OdlcORaBZ+Vq5nrw9Sfh6gViL54hKy2FyFOH8fD1K/K4vn7zOPz9uzkEdn0WF4/bf7h5+PphNBqoXKcxebk5HPltPTUDW1v2k629Az3f/JjGHZ6hKAXrPunaJSrXuV0PXtXM25J07RJe1evwzFufWMreiL1qiVHriU743TzPAFLjo9DY2OAV0NASy9NfR2rcNSpUq42NnflaWN63GikxV4k8uo/abXoAkJORhkuBIa3pSfGoNZrb+6ZaAIlXLwLg6OKGd0ADS4MxPzcHk/H2ozHCQr4nT2++Rl4+edhyjYy/ehH/ek2sztm4K+eJj7xE+YremEwmZr82gJ8+fYv4y+fIufmHbt0nO1Oj2e3jKyUuCo2trVWdWeXn6oZPQAPsHcz55ebkYDQU/+iOa1cuEFC/Cc2fehqAyv41SU5KoKJ3ZUuZbm9Opmbg7fMl6dolKte2zuFGzDUq1ahDg7Y9qNGsNR6Vq3EjJpKUuChL719OZipa99t1nXHduq4rVNNZro8Jl89hMhnZvczcE73nuy/JzUy3xAXYtXwuTbs8i4tHRattKi6/iv61qNa4BR5VzHGO/b6B6k2foCh3Hp9GQx5qGxts7R2o+2RnGj/dhxux5lySY6Nwq+SDh68f104dIf7KBXKzMjny+wYcXcpRpeBxXkNH/JXb53ufMVPQPf6kuU6Sr3Pxrz+tzp9NX01BY2NL+o1EDm75ifw882dr4rVLlusSYHXuJl67RNW6jS0xvKvffs/YC6dRq9X8umga+uwsLh0NJ/7yeSpUqc71mEirfO7kXbMeVerevn5X8NeRVODaev3aZVRqDU27PIvWoyKuFbxJjomkQmV/Apq1AszXpojQX6j9WBDxkZeoXLMOSdGR+NdrQiW/GiRGX7WcIwDRF89gNBqZ/doA5o3oyeHt6/CpVQ+VSkX9pzrT5OlelmtgUtQVnN3cS7yuNe3yLC7ut48bdx8/TEYjvrUbk5+bw4nfN1C9WWuSIi9alvs3vv1Zf6LAcVOzZk3atWsHQGZmJj/88ANPP/10kfUnHn5yD+kjTKVSWTV+imJvb49er0er1TJ58mSMxtI/OzErK4sffvgBW9vbz5JzdnZm165dODs7c+LECfLy8rhy5QoATk5OgHn4sJOTk9UQ4k2bNlG3bl369TM3oIKDg1m7di2jR48udT6lFruXylmFnw9qQkWWze0/IFUqFSq1hqyMNJy0xQ939vTyxdbG3BPtWaGu5XWD0Ujaid04uHuRk5pE9P7N2JfzpO5zY63u6zq5YhqpV07yl60Gfb4Rw839plKpqdCgNbYaFVXcHTgWlV5sTjlZmXhU9LbkdD0hFsCqfPr1BA6HhlCpuo70G4nEXTpDxo0kqtZvhqunF3aOzmSmJJm3X6XB3lmLPrvo55cmRV0GoFnnflw5dhBbOwcykpMA0Gdn4eHjR2bqDcp5emHv6ExGsjmuWq0hJzOd2Aun2bxgKlqPSjTpGmyJm5eTReKVs3z3Zl/ycrKwsbMnX5/L8rf6YcjPx9G1PJ3fmAIqFXu+m4UhP4/szHQcbzb0ALLSUzn8+2Z6jn6PtbM+5MKRA6jVGk7+uePWDic3O/PmN8NmF4+Gk5uVQXpyIi17Ps/uNd/gXV1HSmIcX/9viHmfqDVo3Tyt1rNzcCK94Hb7+gGQnZHGmX07LOehPjvL3DiKiwKwqhMAJ9fylpi3lt1iwmT1R6ldgeVJ18z7oWnnflw5bt4Pt7bN3smZS3/9Sc1mT6BWaTi+azNV6zUttC+z0pLJ0+dQq475D+hbx3/6jURLmXIVvUlLun3/1K19XFTO+uwsbGztKOfpZVmWmXIdjY0tOZnplkZ5dkYax3f9SucRYwsdN87l3C31V5o6Kup4zM3OpJynF5mpN/Dw8bMcfyajyWpdgMtHw9m8cCoqlcrSUPdv+BjlvXyJPHmYxW8MwN5JS61mT5CdkVbkcX3kt/XkZmVa9kVB+uwsVKj55u3ncPWoxOOjJ3L09w2WY6lg/RasozuX6XOycC9Q77fOWX12Jq6eXlZlVSrzuYbG0SqXnIw0zodtoZxXVbSet49lWwcn8rKz0HpYXwuN+fn4Nw3C1sEcx7NqdS4d3mf54/JG7DU0NnZ8/dqt+zJN6LOz+Pq1vqjUamo9/pTlfU/t2YKNrT3ZGenoc7LYv2UtvjVqk3Y9gfCtIZTzrEj/tyeTm52Fp2/B48uJ9BvX0WdnorGxxbtaLToMHEm63sCqD0fxx+qvaT9sjNV2ZmekcXL3r5T3rkLM2WMsedU6vyWvmvMLuJlfRloqYaHrsbW3JzMjDee7XPtzsjLxrHT7HtjM9DTy8vJo0fZ2D1m5CoXPl/I+Va32mz4n06oHz3zdVXFi12Y6vmw+Jzwq1+DqkX2WL+2SY69RrlIVq32WmWz+0jUtIRrPqrVwdHHDYMgjPSmOiHX/R/shb6BSazj2+wb02Zk07tSXqyes55UoTX5Xj0fcvEYm0b279S0om+dNJvrMMfL1OajUGs7t32neJrUaY/7t52De+mxJjo/h6M7NdB05Dk9fPwIeC+L7D0ffrDsv3H38rK+zjk5W56xbRW/L/ZzHdm5C16ItdjePz4jNP5J07TI2tubneF45fpAFo/tgY2NHbnYWao2GBaNu38OZm53JtTPH0N/xmWB+T3PdZmekUd6rMhX9aqDPziL63AkyUq7fvFaqcXDWWt3TfCfnm/cWL3ujH7eOP/P/zT2JNrb2NHy6L5EnDlpiZmek46h14fzhA4TMm0K5Cl607jWQHau/xq2iFxkpyXj63rquqTEZjaTfMOd7Iy7Kco5k5xv58ZO3LY1LuH39zM5IIznuGrVbtjdvfzHXtUZP9yXy+B3HTU4WKpWK7955HhfPSnTsPoEze63nrbh6LJztiz/DxbMSTbtZHze7d+/mrbfeonLlyowcOfKu9ScebtJD+ogyGAwkJyfj4eFRbLlZs2YRHh5OUFAQzz33HCdPniz1ewQHB1s1RgFMJhMzZ84kKCiImTNnkp+fX6pGbnx8PKdOnSIwMJDAwECmT59ObGxsqXO5JxUCiXVoUegn08Yb0x2njK2tHfrc3FKFNZlMhYYZ52Zn4+pegYYvfoRfm340fOljUq+cIvniUatytZ4ZyYyvVzJ9yQoaj/qCZqNn0mz0TCo1boPaxoa63lqSs/JIzNAXm5NGo7F8ABdUsPypP7bhVK48vd75jMd7PE+V2o1JTYol40YSGlvzBDL5enN5mwL/v1NWWgrXo65Su2U71BqN+f1tbCzl1RoNGltby78F4976v1/9ZnR642PUGjXhP39ria1Sa6j+eBsq1ayPd0BDen+4AFRqek/8ijpPdqFa09aU9/GjvHdVHu/zEob8PPLvqJPQZXPxDahLzSYt6Dzsbao1CKRF9wEMm7qYYVMXM/TTBaBSYVPgGK7eIBAnFzdUKjW7Vn+NWq0hNSmBtKR4hn2+lNcX/oyNjS3xV89jY3N7PRs7O8u2qTQay7Idy+fhU7MuRkO+dZ3c7KEsWCdqtdrqedyaO+perdagsbEptDwrLYUb0YX3g9FgQGNjyxP9hhJ3+Sw/TR1DbnYGF//6k0YdCg/ljjp9BBtbOypUrXF7u2zt7rr/C25PUTmrNRrUNjaW5beW3bldt+qoeuPm1nWk0RB97oR1/RVTR3c7Ho0Gg9VxeGs9k8lQaNv86jej95hPUKlUlsbk2fDdpN9IQqXWMGr+T9g7OXM2fHeRx7VaY8O+dSvo+NIYSw5W9aXW4FnZn2fe/gS1RsP+9d9b9tOdiq13tcZqnVs53Lk/4O7n8IHVC6hQvQ5O5T0LxTIaDKgLvGY0GjDm6/EPfMryWos+L5Jw+Swh095h9UejyExOomZgEAMmfcWASV/R/8P5qNRqBkz6itqtOljeY/cP8/GqUcc8aYo+h6N7QtGWK8/A8Z8T1PsFBn8wi6unj3Hp+CHUGo3V+WljZ0eePgeVRkPlWnV5ftw0Klb2x92nKg7OWstQ9IJ2fz8fr5p10LpXoNbjbQie/BXBk7/i2Y/M+QVPNuenvvk+KxbOoEadBjg6OaPPzSkUz7IP7rjWrlg4A1tbW2rVa1TsOkXV9Z37P1+fSwW/mvg3Mp8Tgb1eJOHKOTbO+B8hU0aTlZKET4HJhAoeg406P0vnN6bg6OqGk6s7j/d5iSt/7TWXs9EQsWEFbV98u+jjsxT5Va3XDEeXcqhUav786Vur9dsOfoPgyV9RpV4zmnbuZ6lrXct2GI3WPc42trbsXLEIn1p1qdG4OTEXTnPxyH4GfjSXN5asp3aLtsReOGV1zSvuenR891Yatu0GmK8FBzaspLx3FQZP/ZpK/gHUC3qa8pUqM/DjBdQLepo6rdoz8OMFlh/ncu64elRAdce5ZWNrPubAPBKhflBHHF3K4eJegRY9n8eQl2fZnrxi/lZQqTVoNOa4/T78ij4T56FSq+n34Vd0f+czTCYTles1tdovmgLvXaNhIM+N/Qy1WsPvq5agurmvCp4jNrZ2GE1GyzpP9HzOco54+FSlQtUaVvfT3jpudiyfh6O2HBX9avzt65p75Wp0e2sKarWGgxt+KLSfqtRrZlm+f631cfPEE0/w9ddfo9FomDFjxl3r8F+jUj2YPw85aZA+osLDw83DMurXv2uZrKwssrOzWbZsGQcOHLDcu1lajo6OhV7btGkT4eHh7N69m9WrV9O2bdtCZYrqufXy8qJdu3asW7eOdevWsX79epYuXVrqXO6JjQMGtWPhH5UdGlOeVdHc7CyrD8Ti5OYZcHe3fqSMg70tjr4Blj/ubOwdcfTwJic5wapc2wb+tGpQk1+vGXEoX9HyY6d1w02VQ3knW05Ep1tysrlLTk5aVzLSUgpvcoHyGTeSqFKnseWPKSdXNxycXDAa88lOTyUvJ9syY5++wP/vtHvlIjx8/awaZnn6XEt5B2cXstNScXB2ISstFX327Vh5N/+v1mjwqlmflgNGce7P2xNu2DtrSbx0huuR52n78ns4OLtiY2uLi2clHF3Lk5Nx+z4TO0ctmExWx9TRXVuIPHucbiPeBUBbrjyuHhUwmYy4VfDCrYIXTtpyqNUastJux1JrNBgMeTz57DBOhIXiqHUh8dolGrfvgYd3FRy1rqg0arJSk0kr0HOoz862/LHh6OxCVnoqJ/aEEnX2BE89P7JQndg7aS3r3VpmNBrJzcy0ilmw7h20LuRk3L5n69Z+2rNqEe6+flZ/ROXdHI6dnZ6Kq6cXgz79mvYvvgUm8NU1wDeggdW+PLknlIyU6ziVK092+u360Odk3XX/F9yeonJ2cHYBE5b6vbUsr0CZW3XUsUCv1q2YKQmxpN9ItKq/4urorsejWk3WzePwVq552dkY8vILbZtao8E3oD6+uobEXTTff392/y7qtn4ajY0NDlpXqtRpfLPnxb7QcZ2dnkqdlm2p6FeDojhoXcjJTMc3oD5PDRzFqbBtlv10pxLrvcA6t44F+zteh6LP4fN/biPhwglaDXoLe2cXq/MpPycbtUZNboHX4s4dwwSUL9Ar6+rpxXNTltBm8Ju4eFTEubwnzm7uuHp64erphaPWFY2NLa6eXji5mo+rU2GhxJw7TruhY9DnZKOxsSXtehL+9Zparkf2jk64e/mSkhiLo7MLmXccXxobW8s5VlC+Xk9uVjqGvNtfCt56v/ZDx+Dg7IIhP6/o/MqVJyc9lb3bN3L+5BFefGMCOdlZVsfSnZy1rmSkpgBY1tPY2ha7jr2zCzl37rc79v+psFDy8/J48vnbo4NcPCvRb9JiWr/wBs7lK+Ds5omtg5NVnDs/p27tVztHLTkZaRjy9GSnpxHQoq3Vl073mp9ao8GQn0+rfkOtJswCcCpXHldPL1zcK2AymSx1be+sLTQzfE5mOnEXz9B5+DsAnD2wC13zNnjXqI2dgyOt+71IXm4OSVG3e/TuvCYW5OjiisfN3t3dKxdR3qsyqQmxrPhwNPFXznFm306y0lIoV8GL8l6+GPLzKVfBy/KTr8/F1t4RB60L2ekpt9/z5nEK5vPXci1JT7X68kdfxD4oyMFZS06m+fYcF89KONw8/lw8K3FsWwiVqukK1VFegfdWazRUrd2AzkNe5cjurZZzoOA5kpuThTE/v8gvuG7VUV5ujmXosj47G1Qqos6eoGr9pnf9vC7pumbv7EJuZhreterzxHOjOPPHtiKvrQWXF2RjY0NgYCATJ04kJKTw7OLiv0EapI8Qo9FIUlISO3fuZPz48QwcOBAXF5diy48YMYL169eTnJyMWq2+pyG7RcnKMj9jKjU1ld27d7Nw4cJCjU8/Pz/CwsJISEhg3z7zN9rdu3fn4MGDXL1q/vBZvnw548cXP8uh0vTqctgZUyy/X0+IJT9ff9chW3e6kZ5Fo0a3vx13sFVjZ2tLasrt+3hNRiO5qddxcLs99NLf3ZEBjb35ev810nOtv0WuWacuadfOcTQqHb3BZMnpbkOIq9aqw5Vzt3u5U5LMDd+C5V3cK5BfoCe3on8tsjPSqFRNR9zF0yRGXkRb3pO0pDgM+Xk4aIs+hs7s38n16EjCN69mwag+RJ8/weYFn2BjZw9ApWo6Yi+dNse9dDtuamIcefpcToXd/lBSqTWW+xoBHJxdiTp5kHYvv4eTa3muX7uEk5t5uFPkiXBizx2zlL120tyTpS1v/jIg5uIZtn+/kF6vTUBb7vbwTp/qOqIvnLb8Hn/1As6ubkRfOM3JP37nwOafSEmMw5CXh4OzCyq1Gq9qOnIy0slKTQbMM53e+kY87tJZS6yEyIto3c2jEbyq67h8/CC7Vy6i26jxZKZcR1ve06pOPKuYp7wvWCeYTCRG3Z7o5dayWyr560i8eV9OweVn9+/kRnQkEZtXs3B0H2LOn+DXBZ+gsbUn9majSqVSkZudidFooPWzL1vtx7hLZ9izahEteg0mLyfHsk5aUhz5eXqrHO50a3uKyrlSNR25WRnE3VyeGHkRR1c38m8eU3GXzljqyLnAfqpUTceVEwe5cjQCR62rpf5KqqO7HY8aW3vibh6HsZdOk5oYR35+HunXE26vu28Hh7astcT18DXfFwXmyYiuR122lC13c0h8harVCx3XRkM+J/aEsmBUH8u+2DD7QyI2/8iZfTvIyUi31K9arQFMOLqWt7wGWIZI3+28A6h485y6sx5uncMF3XkOJ105y8G1Swh6aRyOruXx8KtF0uXbE/HciLqEvYsbiZdvH98X/tiGSqXGrsCEQ2A+ruwcnbh26jB1Wj9N3KXbcZIiL+J8s84qVgsg5uwx9q5ezNOvjCc/LxdDfh6OWhdcPSpY9aaYhxwmUs6zEj41dERfOGVZFnf1Ai7lPfCpUZszEXuJOm9eZr5W6XF0dUNzs2Ebf+ksYasW02nkeJzKladitQDiC+SXWCC/StUCiD5zjB+/ns3L736MXp9Lfl7x137/WnW4dPYEl8+d5MevZ/Ps8Dcx5OcVu05F/4BCdeToWt6SV/yls4StXIjaRoNbgXtRLXXt4ETMmSMEPPE0CQX2WcHr42+LPyHh0mkq+AeQcPkMiVfP4ehanszUGxgN+ZwKC+Xr1/ry9Wt9iT1/kk1zP+LQrz+WmN+5/Ts5HPqz5XPB3klrdc222s476trOwcmqsXXprz/J1+fS7dX3Lee+0WAkKy3ZUkafk4XJZCSxwORXCZEXcbnL9ahm01aW/5uvBeZH1JiMxptD/iGgubmHv9Id58+ta4KD1gWvajpiCkxMlRB50fLYsMvHDnLtzDG8qwcQc/E0l49FoLG1s3wuFHfOVvAPsJrI6/q1Szjf3GcXwncRf+kM5w/sZNkb/cwzVs/9gLzcHC4ejWDf5jWW9dRqDWq1Gp8atYk+f9pyjtz67EpJirdMgPTT7EmWcwTAxs4BtY2N5cufswd2YjQY6DZqPJV1De/6eV3wuvbt632JvTmj9l+//si5AzvJzUwn/qK5ztQaNWCynFvnDuzkSOjtx8WpNbfnMNi4caNVx4NGo0FTRA+s+G+QBukj5Ny5cwQFBfHJJ58QHBzM2LFjiy2v1WqZMWMGixYtomPHjuzcuZNJkyb9oxx69eqFv78/Xbt25auvvmLAgAFcunSJ3AJDWcaOHUtYWBjt27dn/vz5AFSpUoVp06Yxbdo0unfvzrlz55g1a9Y/yuVe5ardUJvyCd9pnqHut59/IKBhoGWISnZWJoYC98HcKSE1ExcXF3zKmRtk1T2cOBmdTOLpg2RcOEh+2g0ub1+B0ZCHa9XaALjYa3i9tR9bzyRxNTkHexs19jZqy7KPh3TjRkoa27dsQKOG33+xzinnjpxq1G1ETmaGZRv+CF0HmL+dvFW21mNPcvnofi4cDCP9RiJJ1y5hzM/D3acq+uxM9qxaRNX6zTj4649UqdsEtVqDPie70Pa+NOM7BkychVqtod3g16noVwt376rUbGa+z6lGkxZEnzuJyWQgNyuTXSsX4V+/GRGbf8SrRm32b1zJ6X07SI2P5q+N31se3ZKVlszpPb8CKvJyc8jNzODY1jVUrmu+79EnoBFZqckc2vA9kccOcHjTCspV8kWt1pCRmsyPMybQvFt/vKsFoM/JtuReq1kros6e4MrJIxgNBg5s/olazVqSm53JjfgYwkKWs+XbL/GpVZd9675H9/iT5m+EVXBo2zoO/76RX7/+Ao2tLZWqBRBz4TSXjx/CaDAQ/utPVGsQaM6vZh3iLp2l1mOt8axSnYhf11ief2epk5szXxWskyp1GhFz/hSXjuwnLzeXQ1vX4l9gEqPqTVpYZus1Ggwc2roWv/rNGDrjO54tYj8EPB6EPjuT0zcf9fDb0lk4l/fEq7rOPPtufj6ZqclsmPMRzbr2p27rpzEZDUSdPca100eI2LQaeyct/g0CLeXvdGt7rp0+YsnpVs41mrQgKfoq2empnAzbxqGta7Gzd6Bq3SZkp6ex7ssPadq5LxX9a1ntJ+8atYm/fI6A5kHk5+nZuWIBVeo0KrGO7nY8BjweRG5WJvn6XKLPnWTXigVUrduYv7aFUKV2Qwz5+ZT3rsK+9T9w4dAfpCbGEXP+FCZMXDt9BO8adTgXvsf8nMS92zm7fxeoVNg6OBQ6rqvUacygTxbR//2ZPPfRXCr5B9B+6Ns0bNsNd+8qXD4WTvTZ45zdv5N9vyzHwUlLjcYtrPbT8Z2bzeesWnPXeq/euAUx52/X+19b11K1fjN8AxpYxQJun8PZWWQmJ7Jj4cfU69gPj6o1ycvJxjugEQkXTxF39ihGg4GTv4VQpWFz8rIzubjfPHt61PFwPPxqWeIUzOngplXUDAyiYftniD1/kqgz5jiHQ3+maj3zvnGrVJmMlOtUqdeUCn61iNi4El9dQ9RqDXVbtOHsoT85uW8nadcT+f3Hb8jPy6NKQH0Cmrbi2tkTXDl5GKPBwP7Na6jR8DH8apuHq677airRF06za/l8UKlp2K4H+uxMMm4ksmnuRzTr0p8Kfubjq3KdxsScP0nU6Zv5bf2ZqvWt86vbpDl+NWuzafVSdPWbWl378+/YDwH1G5OVkc6sD96gc99BnDocjq5+U/T63Lt+VlRr3KJQHVVrZN7/x35bz+Z5H+HuU5XKtRuTr9eTkXzdMlwd4PCvq6jWLIh67XoSf+EkMTf32fHtP1uuj+6+1di/ZglqW1uy01M48NPX1G3Tnb9+XYNvnUY89/FCer/3Bf0/mENF/wDaDXmL+m26lZhfakI0Eet/YOd3c/GuWYeIjSup1qTFXbezYF1fO3UElVrDmT9+Iys1mdDF03Dzqox3dR36nGzSk6/jXaM25w/+wcGtP3P6zx2smz0JJ9fyJEZe4uJh8/l+8Ne1+N+8zt6p4DNGX5rxHb3/NxU7J2faDn4Nz8rV8A1oQPTZ4wBU1jUgNyuTUzfPk4jNP1L15nkS8FhrTu/fSULkRfS52Rzevs7ynj416xBz/iRJMdfISk3h9L6dVA6oT/imH6la7+6flQB+jVpYZk02GgwcDf2Zyjfv5X/+s/+j/0cLsXfS0rT781Twq4VX9br41mlMhcp+7Pl5Ocf3/sb1uCh2//wddZo/hV/thuRkZ5Knz+Xa2RNs/b95+NdrQviWtfjXbYwhP59KVauz7fsFRF84zaUj+7lyLAKT0XxdS7+RxK6Vi/CqpqOify2q1G1818/rgte1vhPnUME/gDZD3qJem26U96rM1WPhxJw7zrkDOwlf9z32Tlqq3Dz3y3tV5uCGH7j01x+kJcURsf4Hatyc6Kt69erMmzeP7du3ExUVxbx58+jUqVOR9fevKuvZdP+js+yqTCXNaiPEf4Rjk9dKLlRSjPwEfDiDg6MTRqORNz6Zh3fV6gBMGtGPPsPeoGHzomfRu54Qy941i5g3/yvyjSZUwKe/XeR4xJ/MH96ZqVOn8seRk9TqOZJyfuYGaftaHgQ38S4U6+U1JyzLfvvtN9555x2cnZ0xGAyMnDTXktPkV/rR+yXrnI4d2MPyLydj7+iEIT+f7Mx05oTsZfIr/Wg54BVqNG3F5aMH2PfLd+bJMSp641cvkKO/rzffs5KThYO2HGCi77gZePj68+07A8lMTuKNpebp3zUFro1Hf9/IrpWLABMOzq68MGWh5VvvW8tsbO3Q52ThqC2HCRP9x88g8epFQr/5Ao2NHTUeb0PLAa9gY+fAid9+Yf9Ptx8HdMvzM1bi5FoeoyGfrXM/IObMEVQqNWobW3qOm0WdOjrCt/zMbz8sLLTu+yvM0/Yf2r6e7d8vxN7JGTt7B4Z8PJ/o86dY/9VU1BoNeTnZ2Ng7UKdFG9q/MJpv3xuO7rEnORgaAibzN+1e1QLo8eoEvv/oNXKzM3FwdsHW3oFBk+bhXK48B7eGsGNF4Rze/r/QAnWy0DKLZ8E6iT5znB3fz8fOwQkHZxeCP5yDc7nylpmbD2xYwf5fluOoLYeNvQMDPphzu653bGRPgf3w/McLibt4mq2Lp2FjZ09ORhq9//cZVes1Zen/BvPU8yNJS4pjz6rFRR7PoMKpnDvPT/6KH6e8yVPPj6RG01akJcWx7N0hd2zPIuydnLG1c7DkfGvZzhULMBmN5h42J2eeff8LIk/8xe4i3vft/wvlr9CQIpc5aF2LraNbijoeYy+cZsviaajUavJysrF30mLv6IzRZKDtwFep2awVp//8nT9DviM3K5Naga3x8PUjbM232Dk6YcjPM0+QlJWBd406VK7TiPCNq4o8rj19/fn2ncE8+fxIDm/7hRa9XqDyzQfIn/nzd3avXEhOZjoaW1ucXMoz4MO5lv1k6+CIMT+f3KwM3lwWytL/DebJ58z1DuaewP8bO4Q3loZybMdG9qxahJ2jM7b2DgyYOAencuW5+NefhC65vc8HTllsPof/NwgvXSMu7tteqG4fHzCKg2u/xtbRCRs7B7qOnUXipTOELZuBjZ0duZnpdB37JZ7+Afw8cShPPjeS6k1bkRIfw09TXiP448W4uFfg+I6N7F29+GZO9vSbYM7p6PZf2Lu68D79YKW5wTtzZF9s7R3ITLlB+Uo+dBv2NlV05ttNDm5fT+jyBTg4mbfzpSnz0ZZz59SBPYTMm3Lz2FJRr213nnxuJN+/N5TKdRoXGk4K8NQLrxK26nZ+/W/W2ZFtRef39UbzCJ73hvVmwPC3aNLyKavl/zfnU/4o4tFgHhW9eLz/CKrfPF++H/cir35rnuSlqDqKu3ia0EVTrRqft3QY9QH+jVuRmhDDuk9fp+9Hi9C6V+DUrk3sX7MYO0cnbOwd6PnebMv1ce+KeVw+FIaNnQM5GWnYO7uAyUivsZ/j4evP8rGDaR08kqO//cLjPV/At/btxtzd8tv+9XTUag15ueZrZK3HnyLyxCGefH4U1Qv0ThaMU7CuH3/mBXb/8BUqlZq83MKNtp5vfEjStcsc3xNKZsoNPCv78/RLbxF78Qy/L795vmtdGPjRXKvz/drpo/z42bu8umidZUKjW64ci2DPmm+4EX0VzyrV6TZ6AuW9fAG4cOhPtiyehp2DI0ajkf7jZ1Dp5siVua/0Ij83F1sHR8pV8OK5D77E1s6enMwMfpz6DonXLpvv6TOZcHQpByYTA97/As/K/ix683kykpN45esthbbx0MaVHNzwPQ5aV2zsHej9/myrSdouH/6THd98br5v186OXuNmUTugFsf2bmfDos+xsbGj/hPt6DT4VWztHTgTsZdfvpqKWq1Gn5ONg5MWeydnTEYjnYa8Rq0mLfh16ZecOrAHR5dy1H2iA/ZOLuxZvQSNjQ15RdwjrdbYFHtdaxX8Cse2/0JggePm3L7f2bt6EbmZ6eYh9a5u9J0wF6eb++ncvt8JX7+c3KxMajRrzRPBI3m3Qx0A1q9fz5w5c0hPT6dTp05MmDChyNvB/k2Oz9ztM7FsZa9/paxT+EekQSruWUxMDD17Fv38ylatWj2wDy5WokEK8H9zRxN54QzVatfHpcAHX2nZ26hxdbAhJTuPVUfjSl6hFNp7qbl28QzVdPWthqHeTcr1xCLLX0y5+wyAKfHR3Ii9hlslH5LjovCuURcnV7ciy2rUhde9HnONyrUbYH/Hs1ZvLXPz8iElNgrvmtZx03PvPkw8NSGGlNhIvAMaYHdH3MzkJJKunqdijTo4urhRUXv3e7cKuhEXzfWYSKrWbmh5Xl36jSRiL53FN6Ae9tpyhdZJv5FE3OVz+Nayzj05Pprr0ZFUqdOw0HYnxlz7W3VSVF0aTdbr3oi9hq+u6Lh3LstITiL+8rlC9X43GclJXDq8H1sHR6o3aVHoPQDUd8yvUNL+jzp3EhtbW6rWbVKqHArGLG0dlZTPrXpwLleezLTUu657L9tV3HFtLOaT9172U3Gf4Hc7FjKSk4i/cs7qHE7JufvoDoC0hBhS465RqVYD7BzN9ydmpdw8x6rXxcHl9nnhYn/3YXUp8TEkx0biqyt8zmYkJ5Fw5TzeNc3nrLtj6c/ZpOir+NVpZDlnAdJuJBJ76RwuVQNwLPVxdff8qqpzuXr+DDXqNCj1tT/5ekKR6xxJuPvzFIvK4c66uSU3/+4HQHHXx1tuXSer6OpaxS1Ocfn51Kzzt+vaso01zDEcbErX65McH82NmEgq1y58nQUwFHeyFePOc05T4MKWGHmJ9OQkqtZtXGiiwFv5uFXyJTk2Cp9ad36m3f2RQakJ5jrxucs+y0xOIvHqeSrd+lxzLjxJYUG3zgGtmzuZqcmFzhHLtupvn///5LqWU9zxeHN/+xRxbt3praBqxS4vS/+VBum5c+cYP348kZGR9OvXj7Fjxxa6T/lO33zzDUuXLiUnJ4cnnniCjz/+mPLl7/3v4KJIg1Tcs/z8fOLiim5IOTg44Ol593vKypJSDdJ1Kz5SJA7A2hOFHy/zd/StV6nkQqVQXIP0XtzZIP0nimuQ3ovSNkhLkv83/7i5U55Bme2C4hs3ZeHOBqkoTKl9ptQneEkN0ntRXIP0XpS2QVqS5Jy8kguVQqMKhb+M+ruKa5Dei+IapPfC3kaZk1bJyT5L2yAtyd9tkN5Jo9CFrbgG6b0qqUFaWgUbpP9EcQ3Se/FAN0h7FR6h9SDIXjei1GX1ej2dO3emdevWDB8+nE8++YROnTrRt2/fu64TERHB5MmTmTt3LhqNhk8//RR3d3emTZumRPryHFJx72xsbKhcuXLJBYUQQgghhBAPjD179pCRkcH48eNxdHRkzJgxTJ48udgG6bFjx3jyySepXt18S1i3bt1YtWqVYjk9/HfBCiGEEEIIIcQjSq/Xk5GRYfWjL/DEhILOnDlDo0aNLPfj6nQ6Ll68WGTZW2rVqsX27duJjIzk+vXrrF27llatCt8f/ndJD6l4ZCg11LbXwMmKxAEY9P4oReL8fFKZob8NfIq/r6O0cvOUG0Pq5+agSJyY9Ls/lPxe2GmUGbZlo+C4VqVCGR+wOziUHIqsXB0pE0epfAwK5VOtvDLnGcDhGGWG/idmKDOMsIJWmT91fr2QpEgcgIoK5eRgq8yBZPsAjrPXKzT8006h4chKXR61dso9uiQtV5lzRKnPIwU37cH1gM5ou3jxYsuTKW557bXXeP311wuVzcjIsBrpqFKpUKvVpKamUq5c0bcmPPnkk/j5+dGxY0cAGjRowIgRpR8mXBJpkAohhBBCCCHEQ+qVV15h6NChVq/Z2RV9j7FGoym0zN7enpycnLs2SH/99VdiYmLYsmUL7u7uTJ8+nXfffZd58+Ypkr80SIUQQgghhBDiIWVnZ3fXBuidypUrx/nz561ey8zMxNb27hPJbd68meeee85yD+mECRNo1qwZaWlpuLq6/v3Eb3ow+53/I0JCQtDpdNSpU4c2bdrw+eefW43njoqKQqfTlWGGQgghhBBCiFJRqR7Mn3vQoEEDjh49avk9KioKvV5/195RAIPBQFLS7dsWEhISLK8rQRqk91lAQABhYWFMnDiRjRs3Mnny7fsPfXx8iIiIKMPsSqddu3YcOHDgX1tPCCGEEEIIobzHHnuM9PR01q1bB8CSJUto1aoVGo2GjIwM8vIKPyqradOmrFmzhlWrVvHLL78wZswYmjRpothzSGXI7n2mVqvx9PSkQ4cO2NvbM3LkSN59913c3NxQq9WKdHMLIYQQQgghRElsbGyYMmUK77zzDp9//jkGg4EffvgBgJ49e/L+++/ToUMHq3WGDBlCQkICCxYsIDk5mSZNmvDpp58qlpP0kP6LWrZsiUql4vTp08Ddh+zu3buXLl260KhRI4KDg4mMjLQs27dvHz169KBJkyYMHz6cuLg4y7KIiAieeeYZHnvsMd555x3S0tIA89DhQYMGWcoVfN9by9asWUOrVq1o2bIlW7duBWDYsGHodDqio6MZPHgwOp2OJUtKfiBwcet99dVXvPLKK5ayV69epUGDBqSnpzNv3jyGDx/OCy+8QLNmzXj77bfJyMiwlN2zZw89evQgMDCQCRMm3HU6ayGEEEIIIZSmUqkeyJ971aFDB7Zt28bHH3/Mli1bqFWrFgA7duwo1BgF86RHEydOJCwsjBMnTvD9999TtWrVf1yft0iD9F9kY2ODm5sbN27cKLbcuHHj6NevH6GhoQQEBDB79mzA3JAcNWoUQ4cOZcuWLbi6uvLxxx8DEBsby4gRIxg4cCAhISFkZmby3nvvlSqv8+fPExoaysqVK+nduzfTpk0DYN68eURERODt7c2iRYuIiIjgxRdfLDFecet17dqVP//809LQ3L59O0FBQbi4uAAQFhZGv379+Pnnn4mOjrZse2RkJKNHj2bIkCGEhIRw8uRJvvnmm1JtnxBCCCGEEOK2SpUq0aFDB9zd3cs6FWmQ/ttUKhWmEh5mZW9vj16vR6vVMnnyZGbMmAHApk2bCAwMpE+fPnh5eTF27Fj69+8PwIYNG2jSpAnPPvssVapUYfLkyfz+++8kJiaWmFNWVhbTp0/H39+f/v37ExsbC4CTkxOurq6o1WrL/0szg1dx61WrVo3q1auzc+dOAH777Te6du1qWbdp06b06tULf39/Xn75ZXbs2GHZ9rp169KvXz+qVq1KcHCwZZkQQgghhBDi4ST3kP6LDAYDycnJeHh4FFtu1qxZzJkzhyVLlqDT6Xj//fdp2LAhcXFx+Pr6Wsp5eXnh5eUFmHtICz7ktlKlStjZ2VkalwXl5ORY/V6jRg08PT0Bip3yWSldunRh+/bttGzZkrNnz9K2bVvLMm9vb8v/K1WqZJnRKz4+nlOnThEYGAiY69LJyem+5yqEEEIIIQTwt4bHipJJD+m/KDw8HJVKRf369e9aJisri+zsbJYtW8aBAwcs90uCubEWFRVlKXv58mV69eqF0WjEx8fHall8fDx6vR4fHx9UKpXVtMwnTpywek+tVlts3qXp1b2X9bp27cqePXvYtGkTQUFBODs7W5ZFR0db/h8TE0OFChUAc+O7Xbt2rFu3jnXr1rF+/XqWLl16zzkJIYQQQgghHhzSIL3PjEYjSUlJ7Ny5k/HjxzNw4EDL/ZJ3Kz9ixAjWr19PcnIyarUao9EIQLdu3Th06BAhISHExsaycOFCPDw8UKvV9OzZk8OHD7NmzRquXbvGRx99RIcOHfD09MTLy4sLFy6QmppKUlIS33777T1tg5+fH2FhYSQkJLBv375/vF7VqlWpXr068+fPtxquC3DkyBF++eUXrly5wjfffMPTTz8NQPfu3Tl48CBXr14FYPny5YwfP/6etkMIIYQQQgjxYJEG6X127tw5goKC+OSTTwgODmbs2LHFltdqtcyYMYNFixbRsWNHdu7cyaRJkwCoXLkyCxYsYNmyZXTr1o20tDSmTp0KmHsQFy9ezIoVK+jduzdOTk589tlnADRv3pygoCB69OjByJEjeeutt+5pG8aOHUtYWBjt27dn/vz5iqzXpUsXDAYDbdq0sXq9bdu2rFu3jr59+1K1alVeffVVAKpUqcK0adOYNm0a3bt359y5c8yaNeuetkMIIYQQQoi/TfWA/jzkVKa/MxZTiH/g6tWrbNq0icuXL/PFF19YXp83bx7R0dGWWX6VFnqq5AmeSqPXwMmKxAEY9P4oReIodRo38HEuuVAp5BuVu6xUdnVQJE5Meq4icew0ylz5bdQP3ieI8QH7OFDwMEKp6lYqJ6XyMRiViVPeUbkpJQ7HZCoSx8FGme/MK2iV2baYtMIPi/+7KiqUk61C1yPbB/B6pNSxbWejzLY9YJdHQLnPWqU+j5TKZ3Qrf0Xi3A/O/ZeVdQpFyvxpaFmn8I/IpEbinsXExNCzZ88il7Vq1Yq5c+cWu37v3r1xd3dn8eLF9yM9IYQQQgghxENCGqTinlWsWJF169YVuczBoeTerL/++qvI119//fV/kpYQQgghhBD3jcyye39Ig1TcMxsbG6tHzAghhBBCCCHE3yGTGgkhhBBCCCGEKBPSQyoeGWtPxCsSR6mJiAC+n7pQmUA+AYqEeWFIO0Xi2NlqFIkD4KbQZCuBXm6KxDkYl6JInLQcQ8mFSkmp+UiUGoqkXD7KxHkQqRXauOhUvSJxlJo8DOBcbLoiceKvKzM50svtqikSx2BUpq4BthxLUCSOq5OtInEe83dTJI5BwZl/fF3tFImj1LmmlPRc5a79Sm2aUjk9YFV9X8iQ3ftDekiFEEIIIYQQQpQJaZAKIYQQQgghhCgTMmRXCCGEEEIIIUogQ3bvD+khLSMhISHodDrq1KlDmzZt+Pzzz9Hrb9+fEhUVhU6nK8MMhRBCCCGEEOL+kgZpGQoICCAsLIyJEyeyceNGJk+ebFnm4+NDREREGWZXOu3atePAgQNlnYYQQgghhBDiISRDdsuQWq3G09OTDh06YG9vz8iRI3n33Xdxc3NDrVbj6upa1ikKIYQQQgghkCG794v0kD4gWrZsiUql4vTp08Ddh+zu3buXLl260KhRI4KDg4mMjLQs27dvHz169KBJkyYMHz6cuLg4y7KIiAieeeYZHnvsMd555x3S0tIA89DhQYMGWcoVfN9by9asWUOrVq1o2bIlW7duBWDYsGHodDqio6MZPHgwOp2OJUuWlLid7dq148MPP+SJJ55gxowZjBo1ihYtWnDixAkAtm3bRqdOnWjcuDGDBg0iPj6+xFyEEEIIIYQQDydpkD4gbGxscHNz48aNG8WWGzduHP369SM0NJSAgABmz54NmBuSo0aNYujQoWzZsgVXV1c+/vhjAGJjYxkxYgQDBw4kJCSEzMxM3nvvvVLldf78eUJDQ1m5ciW9e/dm2rRpAMybN4+IiAi8vb1ZtGgRERERvPjii6WKmZGRwejRo/nmm2/o06cPNWvWJCwsjJSUFMaMGcOoUaPYtm0bbm5uLFiwoMRchBBCCCGEEA8nGbL7AFGpVJhKeKi0vb09er0erVbL5MmTMRqNAGzatInAwED69OkDwNixYy29rRs2bKBJkyY8++yzAEyePJknn3ySxMTEEnPKyspi+vTpeHp60r9/f7799lsAnJycAPOwYycnp3saXtyrVy/s7e3x9PSkY8eO/P777+Tn5+Ps7MyuXbtwdnbmxIkT5OXlceXKlRJzEUIIIYQQ4r6TEbv3hfSQPiAMBgPJycl4eHgUW27WrFmEh4cTFBTEc889x8mTJwGIi4vD19fXUs7Ly4u2bdsC5h7SypUrW5ZVqlQJOzs7YmNjC8XPycmx+r1GjRp4enoCYGtr+/c27g729vZW/95iMpmYOXMmQUFBzJw5k/z8fEuD+37lIoQQQgghhCg70iB9QISHh6NSqahfv/5dy2RlZZGdnc2yZcs4cOAAgYGBTJgwAQBvb2+ioqIsZS9fvkyvXr0wGo34+PhYLYuPj0ev1+Pj44NKpcJgMFiW3bqX8xatVlts3qXp1S2tTZs2ER4ezu7du1m9erWlQV3aXIQQQgghhBAPF2mQliGj0UhSUhI7d+5k/PjxDBw4EBcXl2LLjxgxgvXr15OcnIxarbb0IHbr1o1Dhw4REhJCbGwsCxcuxMPDA7VaTc+ePTl8+DBr1qzh2rVrfPTRR3To0AFPT0+8vLy4cOECqampJCUl3fMwWD8/P8LCwkhISGDfvn3/qD6ysrIASE1NZffu3SxcuFCxxq4QQgghhBD/hEqleiB/HnbSIC1D586dIygoiE8++YTg4GDGjh1bbHmtVsuMGTNYtGgRHTt2ZOfOnUyaNAmAypUrs2DBApYtW0a3bt1IS0tj6tSpgHn47uLFi1mxYgW9e/fGycmJzz77DIDmzZsTFBREjx49GDlyJG+99dY9bcPYsWMJCwujffv2zJ8//57roKBevXrh7+9P165d+eqrrxgwYACXLl0iNzf3H8UVQgghhBBCPJhUJumCEo+Il9ecKLlQKSj5TdT3UxcqE8gnQJEwLwxpp0gcO1uNInEAmlV2ViROgNvdRx/ci4NxKYrEyckzllyolNQKHZJKHdvK5aNMnAeRWqGNi07VKxKntV85ReIALN0fVXKhUoi/nqlInJfbVVMkzpmEbEXiABy5kqxIHFcnZeZTeMzfTZE4BgX/pPR1tVMkjlLnmlLScw0lFyolpTYtW6HPI6XyGfNkdWUC3QduA38o6xSKlLLihbJO4R+RWXaFomJiYujZs2eRy1q1asXcuXP/5YyEEEIIIYT45/4Lw2MfRNIgFYqqWLEi69atK3KZg4PDv5uMEEIIIYQQ4oEmDVKhKBsbG6tHzAghhBBCCCHE3UiDVDwy+tarpEicn0/GKxIHUOzeT2LOKRLGZFLmHtIH8dZ0pVJS6v5IjVKBxCPNqNBxrVFwGFolN0dF4iiVkkGhSsrUK3fvX75BmXv2shXK6UE8jgwP2DVbqU81W41ydZSv0I5Tav/bPgKfazJk9/6QWXaFEEIIIYQQQpQJaZAKIYQQQgghhCgTMmRXCCGEEEIIIUogQ3bvD+khvY9CQkLQ6XTUqVOHNm3a8Pnnn6PX335mXFRUFDqdrgwzvP8OHDhAu3aF70u82+tCCCGEEEKIR4c0SO+zgIAAwsLCmDhxIhs3bmTy5MmWZT4+PkRERJRhdqXTrl07Dhw48LfWbdasGRs2bCj160IIIYQQQohHhzRI7zO1Wo2npycdOnRg6tSprFu3jpSUFMsyV1fXsk3wPrOxsUGr1Zb6dSGEEEIIIR5Iqgf05yEnDdJ/UcuWLVGpVJw+fRq4+5DdvXv30qVLFxo1akRwcDCRkZGWZfv27aNHjx40adKE4cOHExcXZ1kWERHBM888w2OPPcY777xDWloaYB46PGjQIEu5gu97a9maNWto1aoVLVu2ZOvWrQAMGzYMnU5HdHQ0gwcPRqfTsWTJknva5nsdsrtt2zY6depE48aNGTRoEPHx8SXmKYQQQgghhHg4SYP0X2RjY4Obmxs3btwotty4cePo168foaGhBAQEMHv2bMDckBw1ahRDhw5ly5YtuLq68vHHHwMQGxvLiBEjGDhwICEhIWRmZvLee++VKq/z588TGhrKypUr6d27N9OmTQNg3rx5RERE4O3tzaJFi4iIiODFF1/829tfkpSUFMaMGcOoUaPYtm0bbm5uLFiwoMQ8hRBCCCGEEA8nmWX3X6ZSqTCZin8Csb29PXq9Hq1Wy+TJkzEazQ/Q3rRpE4GBgfTp0weAsWPHWnpbN2zYQJMmTXj22WcBmDx5Mk8++SSJiYkl5pSVlcX06dPx9PSkf//+fPvttwA4OTkB5qHFTk5O9314sbOzM7t27cLZ2ZkTJ06Ql5fHlStXSsxTCCGEEEKI+01m2b0/pIf0X2QwGEhOTsbDw6PYcrNmzSI8PJygoCCee+45Tp48CUBcXBy+vr6Wcl5eXrRt2xYw95BWrlzZsqxSpUrY2dkRGxtbKH5OTo7V7zVq1MDT0xMAW1vbv7dxCjCZTMycOZOgoCBmzpxJfn6+pTEOD06eQgghhBBCCGVIg/RfFB4ejkqlon79+nctk5WVRXZ2NsuWLePAgQMEBgYyYcIEALy9vYmKirKUvXz5Mr169cJoNOLj42O1LD4+Hr1ej4+PDyqVCoPBYFl24sQJq/csaXKh0vTqKmHTpk2Eh4eze/duVq9ebWls3yKTIAkhhBBCCPHfIg3S+8xoNJKUlMTOnTsZP348AwcOxMXFpdjyI0aMYP369SQnJ6NWqy29hN26dePQoUOEhIQQGxvLwoUL8fDwQK1W07NnTw4fPsyaNWu4du0aH330ER06dMDT0xMvLy8uXLhAamoqSUlJ9zzU1c/Pj7CwMBISEti3b98/qo/iZGVlAZCamsru3btZuHDhv9IQFkIIIYQQoiQqleqB/HnYSYP0Pjt37hxBQUF88sknBAcHM3bs2GLLa7VaZsyYwaJFi+jYsSM7d+5k0qRJAFSuXJkFCxawbNkyunXrRlpaGlOnTgXMw3cXL17MihUr6N27N05OTnz22WcANG/enKCgIHr06MHIkSN566237mkbxo4dS1hYGO3bt2f+/Pn3tK7JZEKtLt1h1qtXL/z9/enatStfffUVAwYM4NKlS+Tm5t7TewohhBBCCCEeDiqTdEGJ++DAgQNUr16d5cuXc+rUqQdiAqKtJ0ue4Kk0fj4Zr0gcgB++26FMoJhzioQZ+N5IReLY2Sr3XVdgFWWGatcqd/eRCfficEKKInFy8/+7l161Ql/W/ge+9L0rtUIbdy1Fr0icttXcFIkDsOF0kiJxElKzFYnTtX4FReIciclUJA7A6WspisRxtFdmbsrWtYqf26K0lDr3ASpolZkrwlahpJS6YufmG0suVEr5RmWyytQrk5OtRpm6fiuomiJx7ocKQ38s6xSKlLhsQFmn8I/ILLvinsXExNCzZ88il7Vq1Yq5c+cyd+5cjh07RrVq1fjiiy/+5QyFEEIIIYRQ1n9heOyDSBqk4p5VrFiRdevWFbnMwcEBgBUrVvyLGQkhhBBCCCEeRtIgFffMxsbG6hEzQgghhBBCCPF3SINUCCGEEEIIIUoiI3bvC2mQikfGxRRlJqRo4OOsSByAF4a0UySOyaRMnBXTFikSBxs7ZeIAw9dOUiSOb3lHReLEZ+coEichU7nZo9NyDCUXKgWlJrbINSgTR6/gxE8Kzf1BvlGZbcs3KJPQ98t3KxIn6NM+isQB8Hd3UCSOrqIy5+zZRGXO2TwFJ6NJSlLm88jOTpk/4xzqeioSR6lJbQBSc/IViePuqEwdKXXvoI2CdaQUJ4UmIlTq2i8ePfLYFyGEEEIIIYQQZUJ6SIUQQgghhBCiBDLL7v0hPaSPiJCQEHQ6HXXq1KFNmzZ8/vnn6PW3n18XFRWFTqcrwwyFEEIIIYQQjxppkD5CAgICCAsLY+LEiWzcuJHJkydblvn4+BAREXHPMdu1a8eBAweUTFMIIYQQQgjxiJAhu48QtVqNp6cnHTp0wN7enpEjR/Luu+/i5uaGWq3G1dW1rFMUQgghhBDigSRDdu8P6SF9RLVs2RKVSsXp06eBuw/Z3bt3L126dKFRo0YEBwcTGRkJwLBhw9DpdERHRzN48GB0Oh1LliyxrLdt2zY6depE48aNGTRoEPHx8YB56PCgQYNYs2YNrVq1omXLlmzdutWy3r59++jRowdNmjRh+PDhxMXFWZbt2bOHHj16EBgYyIQJE6yGHAshhBBCCCEePtIgfUTZ2Njg5ubGjRs3ii03btw4+vXrR2hoKAEBAcyePRuAefPmERERgbe3N4sWLSIiIoIXX3wRgJSUFMaMGcOoUaPYtm0bbm5uLFiwwBLz/PnzhIaGsnLlSnr37s20adMAc6N41KhRDB06lC1btuDq6srHH38MQGRkJKNHj2bIkCGEhIRw8uRJvvnmG+UrRgghhBBCCPGvkSG7jzCVSoXJVPyz8Ozt7dHr9Wi1WiZPnozx5jP4nJycAPMwYCcnJ6vhvs7OzuzatQtnZ2dOnDhBXl4eV65csSzPyspi+vTpeHp60r9/f7799lsANm3aRGBgIH36mJ+HN3bsWEsP7qZNm6hbty79+vUDIDg4mLVr1zJ69GhlKkMIIYQQQohiyJDd+0MapI8og8FAcnIyHh4exZabNWsWc+bMYcmSJeh0Ot5//30aNmxY7Domk4mZM2eyfft2atasiVartTRkAWrUqIGnp/kh3La2tpbX4+Li8PX1tfzu5eWFl5cXAPHx8Zw6dYrAwEBL/rcaxUIIIYQQQoiHkwzZfUSFh4ejUqmoX7/+XctkZWWRnZ3NsmXLOHDggOXezYKK6mXdtGkT4eHh7N69m9WrV9O2bVur5Vqttsj38/b2JioqyvL75cuX6dWrF0ajES8vL9q1a8e6detYt24d69evZ+nSpfe62UIIIYQQQogHiDRIHyFGo5GkpCR27tzJ+PHjGThwIC4uLsWWHzFiBOvXryc5ORm1Wm3V0wng5+dHWFgYCQkJ7Nu3DzA3ZAFSU1PZvXs3CxcuLHFoMEC3bt04dOgQISEhxMbGsnDhQjw8PFCr1XTv3p2DBw9y9epVAJYvX8748eP/blUIIYQQQghxT1Qq1QP587CTBukj5Ny5cwQFBfHJJ58QHBzM2LFjiy2v1WqZMWMGixYtomPHjuzcuZNJkyZZlRk7dixhYWG0b9+e+fPnA9CrVy/8/f3p2rUrX331FQMGDODSpUvk5uYW+36VK1dmwYIFLFu2jG7dupGWlsbUqVMBqFKlCtOmTWPatGl0796dc+fOMWvWrL9fGUIIIYQQQogypzKVputKiP+Ar/64okgcg4KnzPGYTEXiKJXSimmLlAlkY6dMHOCPtZMUieNb3lGROGGXkxSJk5BZ/Bc09yItx6BInEy9seRCpZBrUCaOPl+5c82oUKh8ozLblm9QJqHvl+9WJM6qT/soEgfgVKIy1zV7G2W+9Y9Jy1MkTlq2MnEA9h+PVSSOnZ0yU4EMfMpPkTi2GuV6avIUOkfcHZWpI6V6oZT8G0Kp64hSda3UtX/Mk9UViXM/+LwSUtYpFClmsXLX8LIgkxoJIYQQQgghREke/tGxDyQZsiuEEEIIIYQQokxIg1QIIYQQQgghRJmQIbtCCCGEEEIIUYL/woy2DyJpkIpHhkah8QC5ecpNSGBnq1EkjmJzkyk1GVG+Xpk4gLtWmZwS0pSZRMhBoQOporO9InEAolPTFYmj1IQkLjbKHNcxOcodR7YK7TcHG2XiaOwU+qNGoT+O8hWcaEWpSVuMpgfrD798pWbGQrnJiOzslDnX1AodR2pFb7B7sObc/C/PAapUG0up40g8emTIrhBCCCGEEEKIMiE9pEIIIYQQQghRAhmye39ID+l9FhISgk6no06dOrRp04bPP/8cvf72MLSoqCh0Ol0ZZiiEEEIIIYQQZUMapP+CgIAAwsLCmDhxIhs3bmTy5MmWZT4+PkRERNxzzHbt2nHgwAEl07wvdDodUVFRZZ2GEEIIIYQQ4gEkQ3b/BWq1Gk9PTzp06IC9vT0jR47k3Xffxc3NDbVajaura1mnKIQQQgghhCiGDNm9P6SH9F/WsmVLVCoVp0+fBu4+ZHfv3r106dKFRo0aERwcTGRkJADDhg1Dp9MRHR3N4MGD0el0LFmyxLLetm3b6NSpE40bN2bQoEHEx8cD5qHDgwYNYs2aNbRq1YqWLVuydetWy3r79u2jR48eNGnShOHDhxMXF2dZtmfPHnr06EFgYCATJkywGnJ8N507d7ZsV/v27dHpdGzevBmA999/n48//thS9o8//iAoKAij0ch7773H22+/TZ8+fXj88ceZPHkyeXl5lrLr1q3j6aefpnnz5syaNes/PeudEEIIIYQQ/3XSIP2X2djY4Obmxo0bN4otN27cOPr160doaCgBAQHMnj0bgHnz5hEREYG3tzeLFi0iIiKCF198EYCUlBTGjBnDqFGj2LZtG25ubixYsMAS8/z584SGhrJy5Up69+7NtGnTAHOjeNSoUQwdOpQtW7bg6upqaTBGRkYyevRohgwZQkhICCdPnuSbb74pcTvXrl1rGYq8fv16IiIiePrppwHo0qUL27dvtzQmf/vtNzp37oxabT4cd+zYwZtvvsny5cvZu3cvK1asAODgwYNMnDiR999/n++//57169ezYcOG0lS7EEIIIYQQ4gEkDdIyoFKpSuzZs7e3R6/Xo9VqmTx5MjNmzADAyckJV1dX1Gq15f92dubnNDo7O7Nr1y46derE1atXycvL48qVK5aYWVlZTJ8+HX9/f/r3709sbCwAmzZtIjAwkD59+uDl5cXYsWPp37+/ZVndunXp168fVatWJTg4mB07dpS4jVqt1jIU+db/bW1tAXMvcV5eHocPH8ZkMrFjxw66du1qWbdjx4489dRT1K5dm4EDB/L7778D8Msvv9CxY0fatGlDQEAAPXv2LFUuQgghhBBC/GOqB/TnISf3kP7LDAYDycnJeHh4FFtu1qxZzJkzhyVLlqDT6Xj//fdp2LBhseuYTCZmzpzJ9u3bqVmzJlqtFqPRaFleo0YNPD09ASyNQ4C4uDh8fX0tv3t5eeHl5QVAfHw8p06dIjAw0JK/k5PTvW30HWxsbOjYsSPbt2/HxsYGtVpN48aNLcu9vb0t/69YsSJJSUmWXA4cOGDJJS8vT2YoFkIIIYQQ4iEmDdJ/WXh4OCqVivr169+1TFZWFtnZ2Sxbtgy9Xs/cuXOZMGECGzdutJQpqpd106ZNhIeHs3v3bpydnVmxYoXVfaJarbbI9/P29iY8PNzy++XLl3n77bcJCQnBy8uLdu3aMXbsWACMRiPZ2dml3t679QZ37dqViRMnYmtrS+fOna1uEo+Ojrb8PzY2lgoVKgDmhnJwcDBDhgwBID8/36rBLYQQQgghhHi4yJDdf4HRaCQpKYmdO3cyfvx4Bg4ciIuLS7HlR4wYwfr160lOTkatVhdqePn5+REWFkZCQgL79u0DzA1ZgNTUVHbv3s3ChQtLNelPt27dOHToECEhIcTGxrJw4UI8PDxQq9V0796dgwcPcvXqVQCWL1/O+PHjS73tfn5+7N69m/j4eKvH2zz++ONkZ2ezcuVKq+G6YL6ndPfu3Zw5c4aVK1da7j3t1asXv//+O0lJSRgMBr788kvLvbVCCCGEEELcTyqV6oH8edhJg/RfcO7cOYKCgvjkk08IDg629DbejVarZcaMGSxatIiOHTuyc+dOJk2aZFVm7NixhIWF0b59e+bPnw+YG2z+/v507dqVr776igEDBnDp0iVyc3OLfb/KlSuzYMECli1bRrdu3UhLS2Pq1KkAVKlShWnTpjFt2jS6d+/OuXPnmDVrVqm3fdKkSXz33Xd07NiR1atXW17XaDQ8/fTTlC9fngYNGlit07lzZ+bOncvgwYNp06YNAwYMACAwMJDXX3+dsWPH0qtXL/Ly8vjoo49KnYsQQgghhBDiwaIyyXMzxL8sJyeHGzdusHDhQtzd3Xn77bcty9577z18fX15/fXXFX/fRfuuKBInK0+5YcIXrxf/ZUFpKXUaL/us5BmUSyW/5EcDldbp375QJE56dr4ica6mZCoSJ8eg3HF0OCZdkTi2GmW+ZdWolYkTk6rccWSrUeb7VxuFvsZVqo7mL1FmYrfvp/RSJA7A6URlzhEHhSo7Lj2v5EKlcCNTuePx2PkkReLY2WkUiTOgVRVF4tgqdFwD5Cp0jXR3fLDuTlPyRqN8gzKf/flGZeLoFcrnraBqisS5H6q+/mA+3SFyXs+yTuEfebDOUvHQOHjwICNHjixyWd++fYsd1puamkqXLl3w9/dn6dKl9ytFIYQQQgghFPNfGB77IJIGqfhbGjRowLp164pc5uzsXOy6lSpV4ujRo0Uuu/VsVCGEEEIIIcR/nzRIxd9ib29P5cqVyzoNIYQQQgghxENMJjUSQgghhBBCiBKU9Wy6Ss2ye+7cOfr27ctjjz3G9OnT72kukrfffpspU6bc83sWR3pIxSMjPVeZqQT83BwUiQPg9oBNtjB87SRF4rhr7RSJA1Cnw/8UiXNgw4M1HFzJ+eTqexU/TL60lMpJofkx8HOzVyYQ8KDN3qdUXa/+tLcicZKylZuwp2Glop95fa+UOo783ZS59ld1UeY8A4itW0GRONkGgyJxbmQpM/GTkrfXudgrM2GTUhPtGB+w6yOAjUKTSBkU2jYnW+nnehjo9XpGjhxJ69at+fLLL/nkk08ICQmhb9++Ja4bFhbG/v37CQ0NVTQnOXKEEEIIIYQQ4hGwZ88eMjIyGD9+PFWrVmXMmDGsXbu2xPVycnKYPHky77zzDq6urorm9GB1zwghhBBCCCHEA+hBnWVXr9ej11uPdLGzs8POrvCItTNnztCoUSMcHR0B0Ol0XLx4scT3WLBgATk5OdjY2LBv3z5atGihWH1ID6kQQgghhBBCPKQWL15Ms2bNrH4WL15cZNmMjAyriUlVKhVqtZrU1NS7xo+JiWHZsmX4+fkRExPDjBkzeO211xS7/UQapA+ZkJAQdDodderUoU2bNnz++edW34hERUWh0+nKMMP76/Dhw3Tq1Kms0xBCCCGEEOKB8Morr3Do0CGrn1deeaXIshqNplDPqb29PTk5OXeNHxISgqenJ8uWLWP06NEsX76ciIgI/vjjD0XylwbpQyggIICwsDAmTpzIxo0bmTx5smWZj48PERER9xyzXbt2HDhwQMk0FXfy5Elee+018vKUmXxBCCGEEEKIUlM9mD92dnZotVqrn6KG6wKUK1eOGzduWL2WmZmJra3tXTc7Pj6eFi1aWGJqtVr8/PyIiooqVbWVRBqkDyG1Wo2npycdOnRg6tSprFu3jpSUFMsypW80fhBkZWXx2muv8dxzz5V1KkIIIYQQQjyUGjRowNGjRy2/R0VFodfrKVeu3F3X8fLyIjc31/K70WgkLi4OHx8fRXKSBulDrmXLlqhUKk6fPg3cfcju3r176dKlC40aNSI4OJjIyEgAhg0bhk6nIzo6msGDB6PT6ViyZIllvW3bttGpUycaN27MoEGDiI+PB8xd94MGDWLNmjW0atWKli1bsnXrVst6+/bto0ePHjRp0oThw4cTFxdnWbZnzx569OhBYGAgEyZMKHQTdlFsbGxYvXo1jz322N+rKCGEEEIIIR5xjz32GOnp6axbtw6AJUuW0KpVKzQaDRkZGUWOROzSpQs7d+4kNDSUuLg4Zs6ciV6vp2nTporkJA3Sh5yNjQ1ubm6Fut7vNG7cOPr160doaCgBAQHMnj0bgHnz5hEREYG3tzeLFi0iIiKCF198EYCUlBTGjBnDqFGj2LZtG25ubixYsMAS8/z584SGhrJy5Up69+7NtGnm5zxGRUUxatQohg4dypYtW3B1deXjjz8GIDIyktGjRzNkyBBCQkI4efIk33zzDQDNmzcnMDCw0M/p06exs7OjUqVKCteeEEIIIYQQpaNSqR7In3thY2PDlClT+Oijj2jVqhWhoaG88847APTs2ZPdu3cXWqd69ep8+eWXLFy4kKeffprdu3ezYMECtFplnjstj335D1CpVCXOcmVvb49er0er1TJ58mSMRvODwp2cnADzUF8nJyer4b7Ozs7s2rULZ2dnTpw4QV5eHleuXLEsz8rKYvr06Xh6etK/f3++/fZbADZt2kRgYCB9+vQBYOzYsZYe3E2bNlG3bl369esHQHBwMGvXrmX06NGEhIQUuR0VK1b8mzUjhBBCCCGEKKhDhw5s27aN48eP07RpU9zd3QHYsWPHXddp06YNbdq0uS/5SIP0IWcwGEhOTsbDw6PYcrNmzWLOnDksWbIEnU7H+++/T8OGDYtdx2QyMXPmTLZv307NmjXRarWWhixAjRo18PT0BLC6ETouLg5fX1/L715eXnh5eQHmm6JPnTpFYGCgJf9bjeKC6wghhBBCCCHuj0qVKj0wow9lyO5DLjw8HJVKRf369e9aJisri+zsbJYtW8aBAwcs924WVFQv66ZNmwgPD2f37t2sXr2atm3bWi2/Wze9t7e31axbly9fplevXhiNRry8vGjXrh3r1q1j3bp1rF+/nqVLl97rZgshhBBCCPGvKuuhuUoM2X0QSYP0IWQ0GklKSmLnzp2MHz+egQMH4uLiUmz5ESNGsH79epKTk1Gr1VY9nQB+fn6EhYWRkJDAvn37AHNDFiA1NZXdu3ezcOHCUj0At1u3bhw6dIiQkBBiY2NZuHAhHh4eqNVqunfvzsGDB7l69SoAy5cvZ/z48X+3KoQQQgghhBAPMWmQPoTOnTtHUFAQn3zyCcHBwYwdO7bY8lqtlhkzZrBo0SI6duzIzp07mTRpklWZsWPHEhYWRvv27Zk/fz4AvXr1wt/fn65du/LVV18xYMAALl26ZDXtc1EqV67MggULWLZsGd26dSMtLY2pU6cCUKVKFaZNm8a0adPo3r07586dY9asWX+/MoQQQgghhBAPLZWpNF1eQvwHzNh1SZE4fm4OisQByMjLVyyWEhpXdFMkjru26Icx/x11OvxPkTgHNkxTJE5kaqYicbLzDYrEAchX6DKu1MeBUaFPFaOCH08P2gedUnVd3kGZcy0pu+THb5WWp6MyOSl1HOXfMSLo76rq4qxIHIDYzGxF4mQblLmO3Mgq/JiHv0PJkYO2GmWCKXUZUep6pNRxDWCjVqaOcg3KnCP2GmX6uUa08FMkzv1Q839byjqFIl34oktZp/CPSA+pEEIIIYQQQogyIQ1SIYQQQgghhBBlQh77IoQQQgghhBAl+C/MaPsgkgapeGRU1NqWXKgUYtKLn9TpXgR6uSkSR6l7ZHzLOyoSJyFNuTpS6t7P5j3fUyTOwU3TFYmTnq3MPVsAWQrdj5qn0L12SsUxKHgPqUGhG7eU2TLl7iH1L6fMfY27L6coEgegnpdioRThoNB9bedT0hWJA/C4r7sicfQK3ft3KDZZkThKTktiUChUul65+/WVYKvQfZ+g3H2tznYaReII8XfJkF0hhBBCCCGEEGVCekiFEEIIIYQQogQyYvf+kB5SIYQQQgghhBBlQhqk/yEhISHodDrq1KlDmzZt+Pzzz9Hrbz9bLioqCp1OV4YZ/jNbt26lbdu2tG7dmk2bNpV1OkIIIYQQQoh/SBqk/zEBAQGEhYUxceJENm7cyOTJky3LfHx8iIiIuOeY7dq148CBA0qmec/OnTvH//73P0aPHs23337L3LlzuXTpUpnmJIQQQgghHh0qleqB/HnYSYP0P0atVuPp6UmHDh2YOnUq69atIyUlxbLM1dW1bBP8m3766SeaN29O//790el0DBw4kPXr15d1WkIIIYQQQoh/QBqk/2EtW7ZEpVJx+vRp4O5Ddvfu3UuXLl1o1KgRwcHBREZGAjBs2DB0Oh3R0dEMHjwYnU7HkiVLLOtt27aNTp060bhxYwYNGkR8fDxgHjo8aNAg1qxZQ6tWrWjZsiVbt261rLdv3z569OhBkyZNGD58OHFxcZZle/bsoUePHgQGBjJhwgTLkOMzZ87QokULS7mGDRty6tQpBWtLCCGEEEII8W+TBul/mI2NDW5ubty4caPYcuPGjaNfv36EhoYSEBDA7NmzAZg3bx4RERF4e3uzaNEiIiIiePHFFwFISUlhzJgxjBo1im3btuHm5saCBQssMc+fP09oaCgrV66kd+/eTJtmfpZkVFQUo0aNYujQoWzZsgVXV1c+/vhjACIjIxk9ejRDhgwhJCSEkydP8s033wCQmZlJ5cqVLfG1Wq2lASyEEEIIIcT9plI9mD8PO3nsy3+cSqUq8UHV9vb26PV6tFotkydPxnjzofZOTk6Aeaivk5OT1XBfZ2dndu3ahbOzMydOnCAvL48rV65YlmdlZTF9+nQ8PT3p378/3377LQCbNm0iMDCQPn36ADB27FhLD+6mTZuoW7cu/fr1AyA4OJi1a9cyevRoNBoNdnZ2Vjnn5OT8w9oRQgghhBBClCVpkP6HGQwGkpOT8fDwKLbcrFmzmDNnDkuWLEGn0/H+++/TsGHDYtcxmUzMnDmT7du3U7NmTbRaraUhC1CjRg08PT0BsLW1tbweFxeHr6+v5XcvLy+8vLwAiI+P59SpUwQGBlryv9UoLleunFVPb2ZmplVcIYQQQgghxMNHhuz+h4WHh6NSqahfv/5dy2RlZZGdnc2yZcs4cOCA5d7NgorqZd20aRPh4eHs3r2b1atX07ZtW6vlWq22yPfz9vYmKur/2bv3uCjrvP/jrxlOCkjcwRZ4SHd1nSwzUKwwXRU1VxFvNEy2Fg+rWVB7yO5IPJSnFPWnq6FgpFlumbnuCEmpmBHi3qTo1pplaeYhVDAXPKKAwO8P72ZjU0D9GiO+nz3mkTPX9f3M97pm5ho+8/1enyvfcX///v1ERkZSWVlJQEAAYWFhpKWlkZaWRnp6Oq+99hoA99xzD//85z8d7Xbv3s3tt99etx0hIiIiInKNrFaLU95udEpIG5jKykqOHz9OVlYWCQkJPPbYYzRp0qTG9ceMGUN6ejrFxcVYrdZqI50ALVu2JCcnh2PHjpGbmwtcTGQBTp48SXZ2NikpKbVODQYIDw9nx44d2O12jh49SkpKCn5+flitVgYMGMD27ds5ePAgAMuXLychIQGAvn378t577/H1119TUlLCm2++SdeuXa9qH4mIiIiIiHNQQtrA7Nmzh27dujF9+nSio6OJj4+vcX1vb2/mzJnD4sWL6dOnD1lZWUyePLnaOvHx8eTk5NCrVy8WLlwIQGRkJK1ataJ///4sWrSIoUOH8s0331BaWlrj8zVv3pzk5GSWLVtGeHg4p06dYsaMGQC0aNGCxMREEhMTGTBgAHv27GHevHkA3Hnnnfz2t78lMjKS7t27U1VVxaOPPnqVe0lERERERJyBpaouw1oiTuLLL7+ksLCQ0NDQakWO6uKN7d8a6UPxuQtG4gCEBPgaiWPqU9w24NJTra/UsVM1/zBxJUxt2/0DxxmJsz1jlpE4p8+VG4kDUHKhwkic8v+YHVHfcSoMfj1VVJqJZWbLqNOMkrpoe+vlZ8BciTc+PWwkDsDdAZ7GYpnQyMXMb+8m/1i6r9mtRuKUVZh5R+44Wmwkjsk/KSsMhTpdaub4aIqbwemVht7auLs61/jU7zrfUd9duKy7J2TWdxcu6fOXHqrvLlwTFTWSG8qdd97JnXfeWd/dEBERERERA5zrJxERERERERG5aWiEVEREREREpBYWy41f0dYZaYRURERERERE6oVGSOWmccFQURN3F3O/jm0vOGEkjqkaCYXnzhuJY6qIiEmmihGFDHjeSJy/vD6h9pXqqMLJigiZqmtisohMpaltMxLFnEMnS4zECWrqZSQOwHdnzRTsMlWIyrexmT91TBbH+XD/MSNxTBWjuWCogpCpzxmAi6EvtkauDXdEy9BHhLILZr5DrBo9lKukhFRERERERKQWyrmvD+cbxhAREREREZGbghLSBsRut2Oz2WjXrh09evRg9uzZlJWVOZbn5+djs9nqsYfX7pNPPqFv37713Q0RERERETFACWkD07ZtW3Jycpg4cSJr165lypQpjmVNmzYlLy/vimOGhYWxdetWk928Kp9//jlPP/005eVmzk8SEREREakri8XilLcbnRLSBsZqteLv70/v3r2ZMWMGaWlpnDhxwrHMx8enfjt4lUpKSnj66af5zW9+U99dERERERERQ5SQNmChoaFYLBZ2794NXH7K7pYtW+jXrx/33nsv0dHRHDp0CIBRo0Zhs9k4fPgww4YNw2azkZqa6miXmZlJ3759CQoKIiYmhsLCQuDi1OGYmBhWrVpFly5dCA0NZf369Y52ubm5REREEBwczOjRoykoKHAs27x5MxEREYSEhDBhwgTHlGNXV1dWrlxJ586dze8oERERERGpF0pIGzBXV1d8fX0pKiqqcb3nn3+eqKgoNmzYQNu2bZk/fz4ASUlJ5OXlERgYyOLFi8nLy2PEiBEAnDhxgrFjxxIbG0tmZia+vr4kJyc7Yu7du5cNGzawYsUKBg0aRGJiInAxKY6NjWXkyJGsW7cOHx8fpk6dCsChQ4eIi4tj+PDh2O12Pv/8c5YsWQKAu7s7t99+u+E9JCIiIiJSN/U9NbehTtnVZV8aOIvFQlUt1wXz8PCgrKwMb29vpkyZQuX/XdPQ09MTuDjV19PTs9p0Xy8vLz766CO8vLzYtWsX5eXlHDhwwLG8pKSEWbNm4e/vz5AhQ1i6dCkAGRkZhISEMHjwYADi4+MdI7gZGRncddddREVFARAdHc3q1auJi4szszNERERERMSpKCFtwCoqKiguLsbPz6/G9ebNm8eCBQtITU3FZrMxfvx4OnToUGObqqoq5s6dy8aNG2nTpg3e3t6ORBagdevW+Pv7A+Dm5uZ4vKCggGbNmjnuBwQEEBAQAEBhYSFffPEFISEhjv5/nxSLiIiIiEjDoym7Ddi2bduwWCy0b9/+suuUlJRw7tw5li1bxtatWx3nbv7QpUZZMzIy2LZtG9nZ2axcuZKePXtWW+7t7X3J5wsMDCQ/P99xf//+/URGRlJZWUlAQABhYWGkpaWRlpZGeno6r7322pVutoiIiIiIcRaLc95udEpIG5jKykqOHz9OVlYWCQkJPPbYYzRp0qTG9ceMGUN6ejrFxcVYrdZqI50ALVu2JCcnh2PHjpGbmwtcTGQBTp48SXZ2NikpKbVODQYIDw9nx44d2O12jh49SkpKCn5+flitVgYMGMD27ds5ePAgAMuXLychIeFqd4WIiIiIiDg5JaQNzJ49e+jWrRvTp08nOjqa+Pj4Gtf39vZmzpw5LF68mD59+pCVlcXkyZOrrRMfH09OTg69evVi4cKFAERGRtKqVSv69+/PokWLGDp0KN988w2lpaU1Pl/z5s1JTk5m2bJlhIeHc+rUKWbMmAFAixYtSExMJDExkQEDBrBnzx7mzZt39TtDREREREScmqWqLsNaIg3A0m2HjMQpvVBZ+0p1VFZh5uNnNTRdo2mTRkbiNHJxvt+6fv5fl55GfqVCBjxvJM5fXp9Q+0p1VFFp5j1ZYejrwNS3iskvp0pT22Ykijm3ergbiVNcWmYkDsB3Z8uNxKmoNLO3fRubKZdxurTCSBwAL3czx0h3VzNxLhj6LjL1OQNwMfTFZup95IxMbZqpvyGshuaOjnmgpZE410PwlA/ruwuX9MmLYfXdhWvifH81ioiIiIiIyE1BCamIiIiIiIjUC132RUREREREpBYNoaKtM9IIqYiIiIiIiNQLjZDKTaO8wkzhF1dTZ/8Dp86bKZJhqvjDsbM1V0muq9u8PIzEAep0OaG6OH3OTKEVU8WIYka8ZCQOwKtLxhmJ42yFf5yx5p65kmZmnK8wcwxxxmI0pkYiLhiq/GKyNk5RiZnXzcPVzDuysZsTjk8Y2uGmCu04I5OfWxNMfdbk5qOEVEREREREpBaWBvwDR31ywp/ERERERERE5GaghLQBsdvt2Gw22rVrR48ePZg9ezZlZf++tlx+fj42m60ee3htFi5cyH333Uf79u3505/+xJkzZ+q7SyIiIiIicg2UkDYwbdu2JScnh4kTJ7J27VqmTJniWNa0aVPy8vKuOGZYWBhbt2412c0r9u677/Luu++yZMkS3nvvPb788kteffXVeu2TiIiIiNw8LBbnvN3odA5pA2O1WvH396d37954eHjw5JNP8txzz+Hr64vVasXHx6e+u3hVjh49ysyZM+nQoQMA/fv355///Gc990pERERERK6FRkgbsNDQUCwWC7t37wYuP2V3y5Yt9OvXj3vvvZfo6GgOHToEwKhRo7DZbBw+fJhhw4Zhs9lITU11tMvMzKRv374EBQURExNDYWEhcHHqcExMDKtWraJLly6Ehoayfv16R7vc3FwiIiIIDg5m9OjRFBQUOJZt3ryZiIgIQkJCmDBhgmPK8RNPPEGnTp0c6+3fv5877rjD4N4SEREREZGfmhLSBszV1RVfX1+KiopqXO/5558nKiqKDRs20LZtW+bPnw9AUlISeXl5BAYGsnjxYvLy8hgxYgQAJ06cYOzYscTGxpKZmYmvry/JycmOmHv37mXDhg2sWLGCQYMGkZiYCFxMimNjYxk5ciTr1q3Dx8eHqVOnAnDo0CHi4uIYPnw4drudzz//nCVLlvyov9988w0bN24kOjrawF4SEREREamdxWJxytuNTlN2GziLxVLrtfw8PDwoKyvD29ubKVOmUFl58bpmnp6ewMVpwJ6entWm+3p5efHRRx/h5eXFrl27KC8v58CBA47lJSUlzJo1C39/f4YMGcLSpUsByMjIICQkhMGDBwMQHx/vGMHNyMjgrrvuIioqCoDo6GhWr15NXFycI25FRQXjx49nyJAhN3SBJhERERERUULaoFVUVFBcXIyfn1+N682bN48FCxaQmpqKzWZj/PjxjnM1L6eqqoq5c+eyceNG2rRpg7e3tyORBWjdujX+/v4AuLm5OR4vKCigWbNmjvsBAQEEBAQAUFhYyBdffEFISIij/98nxd9buHAhp0+fJj4+vg57QEREREREnJkS0gZs27ZtWCwW2rdvf9l1SkpKOHfuHMuWLaOs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k4iNjeWf//wnhw4d4siRI8yePdvMThIRERERuUG98sorP6qt8vTTT/P73//+R+u6uLjg7u5e7TEPDw/Onz/PLbfcUutzTZkyheDgYHr06HFNff4hJaQNWEVFBcXFxfj5+dW43rx581iwYAGpqanYbDbGjx9Phw4damxTVVXF3Llz2bhxI23atMHb29uRyAK0bt0af39/ANzc3ByPFxQU0KxZM8f9gIAAAgICACgsLOSLL74gJCTE0f/vk+K7776bDz/8kP379xMfH8/gwYNp0aLFFewNEREREZGrZ72KirY/hSeeeIKRI0dWe+w/k87v3XLLLezdu7faY2fPnq329/rlrF69mu3bt5OWlnbVfb0UTdltwLZt24bFYqF9+/aXXaekpIRz586xbNkytm7d6jh384cuNcqakZHBtm3byM7OZuXKlfTs2bPacm9v70s+X2BgIPn5+Y77+/fvJzIyksrKSgICAggLCyMtLY20tDTS09N57bXXHOu6urpy/vx59u/fz9NPP13n/SAiIiIi0lC5u7vj7e1d7Xa5hPSee+7hn//8p+N+fn4+ZWVltY6O7ty5kxkzZjBv3jzHoJMpSkgbmMrKSo4fP05WVhYJCQk89thjNGnSpMb1x4wZQ3p6OsXFxVit1mojnQAtW7YkJyeHY8eOkZubC1xMZAFOnjxJdnY2KSkpdbqGUXh4ODt27MBut3P06FFSUlLw8/PDarUyYMAAtm/fzsGDBwFYvnw5CQkJ1dovWLCAkSNHcvvtt1/RfhERERERudl17tyZ06dPO0Y5U1NT6dKlCy4uLpw5c4by8vIftTl+/DhPPvkkjz/+OHfffTdnz57l7NmzxvqkhLSB2bNnD926dWP69OlER0cTHx9f4/re3t7MmTOHxYsX06dPH7Kyspg8eXK1deLj48nJyaFXr16O+emRkZG0atWK/v37s2jRIoYOHco333xDaWlpjc/XvHlzkpOTWbZsGeHh4Zw6dYoZM2YA0KJFCxITE0lMTGTAgAHs2bOHefPmOdpu27aNL7/8ktGjR1/FnhERERERuXr1XU3XRJVdV1dXpk2bxosvvkiXLl3YsGEDzz77LAADBw4kOzv7R20yMjL417/+xfz58+nYsaPjZoqlqi7DWiINQPL/HjASx2rw9IHzF5zr4/dFQYmROLc0Nnd6+t23NzYSx8vNTJ9KLlQYiVNh8NDrbEfxSmfrkBP6w5NzjMRJSa35R8e6Kq8095pVGIxlgrMdZwFOnLtgJI6p89lu83a+kiKm3kauJr+0DTB5fDT1+jvbMfvJ0Fb13YXLirN/Ud9duKTkwXddcZvCwkI+++wzOnbsyK233nodelV3zncEEhERERERkevm9ttvd5pT4JSQioiIiIiI1MLipFV2b3Q6h1RERERERETqhRJSERERERERqReasis3DVPn7FcYPPf/8MkyI3FMFX/4y/IfV1a7KgantKx8aZCROK1u8TIS59BJM4WfzleYKY4EcMHQm7vS0BvJ1EfEZKEN5yrZYa4YUeyY2UbivP5aQu0r1VH+qZqrrddVI1czv5kXlZgpIFRm8OCft+9fRuKYKmoTfq+Z88jcDBYQMlVoq5Gbc429VFWZ20emjpH/cbW/q2byM+KsnOvd1HBov4qIiIiIiEi9UEIqIiIiIiIi9UJTdkVERERERGqhKrvXh0ZIbzB2ux2bzUa7du3o0aMHs2fPpqzs3+ch5ufnY7PZ6rGH1+6TTz6hb9++P3p8/fr19OzZk65du5KRkVEPPRMREREREZOUkN6A2rZtS05ODhMnTmTt2rVMmTLFsaxp06bk5eVdccywsDC2bt1qsptX5fPPP+fpp5+mvLy82uN79uzhf/7nf4iLi2Pp0qW8/PLLfPPNN/XUSxERERERMUEJ6Q3IarXi7+9P7969mTFjBmlpaZw4ccKxzMfHp347eJVKSkp4+umn+c1vfvOjZX/961+5//77GTJkCDabjccee4z09PR66KWIiIiI3IysFue83eiUkN7gQkNDsVgs7N69G7j8lN0tW7bQr18/7r33XqKjozl06BAAo0aNwmazcfjwYYYNG4bNZiM1NdXRLjMzk759+xIUFERMTAyFhYXAxanDMTExrFq1ii5duhAaGsr69esd7XJzc4mIiCA4OJjRo0dTUFDgWLZ582YiIiIICQlhwoQJjinHrq6urFy5ks6dO/+o/19++SUPPPCA436HDh344osvrmXXiYiIiIhIPVNCeoNzdXXF19eXoqKiGtd7/vnniYqKYsOGDbRt25b58+cDkJSURF5eHoGBgSxevJi8vDxGjBgBwIkTJxg7diyxsbFkZmbi6+tLcnKyI+bevXvZsGEDK1asYNCgQSQmJgIXk+LY2FhGjhzJunXr8PHxYerU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r+9uiYiIiIiIGKOE1Al9++23bNq0iRkzZtCqVSsee+wx3Nzc+Pjjj+u7ayIiIiIiNyWLxTlvNzolpE7oH//4By1atOC2225zPPboo4/i7e3Nnj17+M1vfkOnTp14/PHHKSgoAGDr1q2EhVUvbW+z2cjPz8dutztGWTt16sSoUaM4duzf5etri7lp0yZ69uxJ586dWb58ea39v9rnq6ldTdsnIiIiIiI3JiWkTqiwsBA/P79qjz3++OO0a9eO3/3udzz44IO8++67BAYGEhcXR2VlZa0xP/vsM4KDg0lLS8Pd3Z0XX3wRgLNnz9YYs7i4mFdffZVXXnmF3//+98yePbtOU4ev9vku105ERERERBoeJaRO6MKFC7i4/PhCzllZWXh5efH000/TrFkzJk6cyIEDB9i5c2etMQMCAnj88cdp0aIFv//978nOzubChQu1xiwpKWHy5Mm0bduW6OhoysvL+de//nXdnu9y7URERERE6pPV4py3G50SUifk4+PDqVOnqj0WHR3NgQMHaN68ueMxd3d3brvtNo4ePfqjGOfOnat2PyAgAMv/TTK//fbbqaio4MSJExw9erTGmLfccgt33nmnYxlAVVVVrdtwtc93uXa1bZ+IiIiIiNx4lJA6oXbt2rF//37OnDnjeCw/P5877rij2jmTpaWlHDt2jKZNm2KxWKioqHAs27VrV7WYR44ccUyLPXLkCK6urvzXf/0XTZs2vWxMAG9v76vahqt9vsu1q237RERERETkxqOE1Al17NiRX/7yl0yaNIlvv/2W5ORkysvL6dmzJ2fPnmXhwoUcPnyYl156iVatWnHPPfcQEBDAd999x6FDhygpKSEpKalazGPHjvHKK6/w7bffsmjRInr16oWLiws9evS4bMxrcbXPd7l2tW2fiIiIiMj1ZHHS/250SkidkMViYfHixZw5c4bw8HA++OADXn31VZo0acLSpUvZsmULERERHDlyhOTkZKxWK3fccQfDhw/n0Ucf5dFHHyU2NrZazKCgIHbv3k1kZCTl5eVMmjQJAC8vr8vGvBZX+3yXa1fb9omIiIiIyI3HUlWXEwLlhma321mzZg1/+ctfnPr5rnc/X96y30icb0+UGYkDsOfoaSNxbvdtbCROq1sbGYlTYfCw0uH2q5s2/p+OnzPzup04Z6bIlovBKgQuhn5atBr6ldXUNdFM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7NmTrl278sYbb9Rpu0VERERExHld0ZTdQ4cOMWnSJNasWUPbtm3p0aMHmzZt4vHHH6d79+6sXbuWc+fOkZiYWK3dO++8w8cff8y0adMIDg4GLk73jI2NZeTIkaxbtw4fHx+mTp3qaLN37142bNjAihUrGDRokCPmiRMnGDt2LLGxsWRmZuLr60tycnKt7ZKSksjLyyMwMJDFixeTl5fHiBEj6rTdZ86cIS4ujiVLljB48GDatGlDTk4Ohw4dIi4ujuHDh2O32/n8889ZsmQJAJs2beKNN94gKSmJWbNmsXbt2jo911dffcW0adOYOXMm69ato6ioiBUrVjiWZ2dnc+jQIdasWUPHjh3585//XGvMq+3Lvn37mDt3Ln/+859Zs2YNBw8exG63A/C///u/pKenA5CXl0deXh733HMPAFlZWbz++ussWbIEu91OXl4eGzZscMR955138PT0ZO3atfj5+fHKK68A8N577/Hqq6/y//7f/+Ptt98mLy+Pt956C4D09HRSU1OZN28eSUlJzJ8/v87JuIiIiIjItbI46e1Gd0VTdgcMGMCdd94JwCOPPMKJEydISUnh1ltv5amnnsJisTBixAji4+OrtSspKeHNN9/Eze3fF7nOyMggJCSEwYMHAxAfH8/u3burtZk1axb+/v4MGTKEpUuXAuDl5cVHH32El5cXu3btory8nAMHDtTaztPTEwCr1Yqnpyc+Pj513u7IyEg8PDzw9/enT58+bNq0iQsXLpCRkcFdd91FVFQUANHR0axevZq4uDg++OADIiIi6Ny5MwBRUVHs3Lmz1udq1aoVW7Zswc3NjZ07d1JVVVVt+1xcXJg2bRoeHh4MGjSIF154odaYV9sXDw8PAMrKyggMDOSvf/2rY1mTJk3w9vYG+NG+vP/++8nKyqKiooJPP/0UFxcX9u/f71geEBDAc889B1x8T2VkZADwt7/9jeHDhxMSEgLAnDlzHCOraWlpPPLII44fNHr27MmHH37oWFdERERERG48V5SQfp+g/PDfrq6uFBUVOZKdyspKzp49S2lpqWOd6OjoaskoQEFBAc2aNXPcDwgIICAgwHG/devW+Pv7A1RrW1VVxdy5c9m4cSNt2rTB29ubysrKWttdi++344fbD1BYWMgXX3zh0YvRJwAAooBJREFUSIoqKiocie+xY8d44IEHHOu2aNGiTkng+fPnmThxInl5ebRr1w4XF5dq2xcUFOToR12372r70rx5c6ZPn87cuXPZv38/3bp148UXX8TPz6/GdsXFxYwbN449e/bQoUMHGjVqVG0b7rvvPse/f7gNBQUFNG/e3HH/7rvvdvy7sLCQTz75hJUrVwJQWlpK7969a90GERERERFxXtdc1KiiooL27dszb9484GLCeObMGVxd/x26cePGP2oXGBjItm3bHPf379/PM88845gS+v3o23/KyMhg27ZtZGdn4+XlxVtvvVXt/NLLtfuexWKhqqqq7htYg4CAAMLCwhwjwpWVlZw7dw4APz8/jh075lj36NGjdYq5fPlyioqK+Pvf/467uzuzZ8+mqKjIsby27buUq+1LQUEBNpsNu93OyZMn+eMf/0hycjKTJk0CLo42w8XX/IcVvpKSkvDz8+Pjjz/GYrHwxz/+sVrcy21DYGAg+fn5jvvvvvsuW7du5aWXXiIgIICoqCj69u0LXBy1NfWDg4iIiIhIbRpAQVundM2XfenevTtHjhxh586duLi48P777zN69Ohak77w8HB27NiB3W7n6NGjpKSk4Ofn50hyLqekpASAkydPkp2dTUpKyhUlmC1btiQnJ4djx46Rm5tb53aXMmDAALZv387BgweBi8lkQkICAL169WLt2rX84x//4J///CerVq2qU8zvt6+4uJi1a9fy9ttvX3MCfbV9+frrr3n88cfZsWMH586dw2KxVBvp/NnPfoanpycffvghhw8fdhQ1KikpobKyku+++44333yTjRs31mkbBg8ezBtvvMH27dvZt28fS5cu5Y477gAuTpt+7733OHv2LOfPn+eFF16odm6tiIiIiIjceK55hNTHx4fk5GSmTZvG+PHjadOmDSkpKdVGSC+lefPmJCcnM3PmTKZPn859993HjBkzan2+yMhIsrKy6N+/P23btmXo0KG8/fbblJaW1qm/8fHxxMfHs3z5cjp06EBoaGid2l1KixYtSExMJDExkW+//ZYOHTo4RoofeughvvrqK+Li4vD19aVXr16OxLUmw4YN4x//+Ae//vWvCQoKIioq6pqvm3q1fenatStDhw7lj3/8I6dPnyY4OJgnn3zSsdzNzY3p06czefJkTp8+zW9/+1uCgoKIi4vjueeeo1+/fjz44IP079//kpV9/1N4eDjfffcdzz77LKWlpURERPC73/0OgIEDB3Ls2DGeeOIJzpw5Q+/evfnDH/5w9TtFRERERETqnaXK1PxVESc356NvjMRp5GZuvsZHXxXVvlIdnCurMBKn8LuzRuK4u7sYiQPwh4daG4lzz223GImz7YiZ16y45IKROAClF8wcxqswE6fS0LeKM347mZquZWrbcr46biTOU79qZSQOwOHT543E8fc0c1rGXz8tNBLHp7G500TeXvTX2leqizNmjkcvzn3GSBwvj2ueeOdwrqyy9pXq4DZvM6+bay0z+Oqq0uCBzVSs04b+hjD1msX3NPO9fz2s/czM8cS0iHtur+8uXJNrHiG90R05coSBAwdeclmXLl14+eWXf+IeXbnt27dXG7n8oYcfftgxjVhERERERMSZ3PQJ6W233UZaWtollzVq1Oin7cxVuueeey67DV5eXj9tZ0REREREROropk9IXV1dq11q5Ebk4eFxw2+DiIiIiIgzU5Xd68PcZH8RERERERGRK6CiRnLTeHnLfiNx3F3M/Tx24pyZQgKmisiYKthkNfgTopvVTCxvDzOFlkovmCnacMHUi2aQoV1t7P1oqj8mOdu2nTdU0MqnkblCZGcNFUhp5GrmN/MKQy9aWYW5z6ypQmSmtm3Ks382EoefB5uJA2yZN8RInAuGXjdnHBlzNfT3SOT/+8hInAtlZor1HXllsJE410PGLucsajSgvYoaiYiIiIiINGgWnPCXiQZAU3ZFRERERESkXighvYFt3bqVkJCQ+u7GJY0bN46kpKTr+hwxMTHY7fbr+hwiIiIiInL9aMquiIiIiIhILZzxXOKGQCOkIiIiIiIiUi+UkDYw6enphIWFERQUxOjRoykuLq5x/e+++4677rqLsrIyXnrpJR5++GEAHn74YTIzMwFIS0vjoYce4v7772fevHl8X5i5qqqKJUuW0LNnT7p27cobb7xxyefIy8sjNDSUL7/8EoDy8nJmz55N165dCQsL4/3333es+/394cOHc++99zLq/7N353FRVf//wF/DDAju4AIoIPYx2cQQAcGNHRHFNCHNQq1wQ6nUREEREBcwv2ShYmmWWmqWuKDyURbNjRJcwMQVQUARVJRYhnXu7w9+3o/kwgwcmHF4P3vMI7wz9zVn7sy9cOae+z6ffgqxWMy31dfXF4MGDcJnn32Gmpqa5m0sQgghhBBCiFxRh1SJ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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 27
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:35:17.736684Z",
     "start_time": "2024-09-20T13:23:07.364896Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 进行网格搜索调参\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "param_second_grid = {\n",
    "    'learning_rate':[0.1,0.11,0.12,0.13],\n",
    "    'max_depth': [4,10],\n",
    "    'n_estimators': [160]\n",
    "}\n",
    "grid_second_search = GridSearchCV(estimator = GradientBoostingClassifier(),\n",
    "                     param_grid = param_second_grid, scoring = 'neg_mean_absolute_error', cv = 3)\n",
    "grid_second_search.fit(X_train , y_train)\n",
    "grid_second_search.best_params_\n",
    "'''\n",
    "{'learning_rate': 0.13, 'max_depth': 4, 'n_estimators': 160}\n",
    "'''\n",
    "# 集成学习提升决策树分类模型\n",
    "# n 160 d 4 a 0.8890163692846558 s 0.6836\n",
    "# n 160 d 4 l 0.12 a 0.8902440244868226 s 0.6825"
   ],
   "id": "adc402b1f980d300",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"\\n{'learning_rate': 0.13, 'max_depth': 4, 'n_estimators': 160}\\n\""
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:40:12.189283Z",
     "start_time": "2024-09-20T13:35:17.737685Z"
    }
   },
   "cell_type": "code",
   "source": [
    "GBC_model = GradientBoostingClassifier(n_estimators=160,max_depth=5)\n",
    "GBC_model.fit(X,y)\n",
    "# 预测样本的各类标签（这里是0和1）的概率\n",
    "GBC_model.predict_proba(X_test)\n",
    "# 预测标签为1的概率\n",
    "y_predict = GBC_model.predict_proba(X_test)[:,1]\n",
    "# AUC值，验证集上的性能结果\n",
    "y_auc = roc_auc_score(y_test,y_predict)\n",
    "y_auc\n",
    "# 170  0.8888437742422963\n",
    "# 160   0.888199587650951\n",
    "# 6   0.89\n",
    "# 7.  0.9100389600680221\n",
    "# 10  0.9429728037953802\n",
    "# 15 0.9721338791173048\n"
   ],
   "id": "ef8a5a06d28b0813",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9721186166851057"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:40:12.196251Z",
     "start_time": "2024-09-20T13:40:12.189283Z"
    }
   },
   "cell_type": "code",
   "source": "y_predict",
   "id": "3669c3623122d06d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([2.85728193e-01, 9.25912403e-06, 9.86614358e-05, ...,\n",
       "       2.49934657e-05, 3.53584145e-04, 8.89063138e-01])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 30
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:43:23.246082Z",
     "start_time": "2024-09-20T13:40:12.197250Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "le = LabelEncoder()\n",
    "y_pred = le.fit_transform(y_predict)\n",
    "cm = confusion_matrix(y_test,y_pred)\n",
    "# 打印混淆矩阵\n",
    "print(cm)\n",
    "# 可视化混淆矩阵\n",
    "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['负类', '正类'], yticklabels=['负类', '正类'])\n",
    "plt.xlabel('预测标签')\n",
    "plt.ylabel('真实标签')\n",
    "plt.title('混淆矩阵')\n",
    "plt.show()\n",
    "y_predict"
   ],
   "id": "acbdbc7118124e3",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 1 1 ... 0 0 0]\n",
      " [0 0 0 ... 1 1 1]\n",
      " [0 0 0 ... 0 0 0]\n",
      " ...\n",
      " [0 0 0 ... 0 0 0]\n",
      " [0 0 0 ... 0 0 0]\n",
      " [0 0 0 ... 0 0 0]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhwAAAHTCAYAAABsqMGAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBF0lEQVR4nO3df3zN9f//8fs52znbzDb2xvycEibUSpSQH6HCmxTpjVSorHorWe809O4HkZSUoqnkV4lM68cb+ZGQZHm/s1Tmx0isjMLszLbzY+f7h4/zdZq0wznttbPbtcvr8nZee72e53mOert7PH+8TG632y0AAIAAMpd3BwAAQPAjcAAAgIAjcAAAgIAjcAAAgIAjcAAAgIAjcAAAgIAjcAAAgIAjcAAAgIAjcAAAgIAjcAAG53A4lJWVdUFtHD161Ot1dna2du/e7XWuqKhIkyZNOut7uVwuTZw4UTt27LigfvyRDRs2KCMjQy6XKyDtAyh/oeXdAQDntnTpUk2ePFnPPPOM+vbtqwULFmjixIkKCQkpda3b7VbDhg21cuVKz7nly5dr3LhxeuaZZ9S7d29J0ocffqi5c+cqMTFRgwYNUq1atfTkk0/KZDLp6quvVrNmzbzazcrK0oIFC9StWzev819//bW++uqrUv1wOp0qKSlRcnKyJGn+/Pn65ZdfPD+vWbOmhg0b5nk9e/ZsHT9+XB999NF5fEMAKgICB2BwAwcO1K+//qrHH39ceXl5Cg8P18UXX+wVKk5btmyZ5s6d63Wua9euWrNmjR599FHt2rVLycnJGj16tO677z4tWLBAjzzyiNxut5o2barZs2erTp06pdr94osvdMUVV6ht27aSTlU8nE6nMjMzNXfuXN10001e15eUlOjMxzQtX75cVqtVbdu21dy5c9WvXz/99ttvKikpUUlJiTIzMzVu3DjZbDbP/Xa7XdHR0QoPD7/QrxCAARA4gApg5MiRKiwsVFhYmCwWi1wulw4dOlTquhMnTig01Ps/67CwML344otq0qSJOnfuLOnUEMvixYu1YMECDRgwQN27d9e7776r7t27q3v37hoxYoRXlWP58uXKyspSQkKC51znzp3VqVMnxcbG6tlnnz1n/y0Wi9q0aaO7775br732mv7+979r1KhRysjI8Fzz5JNP6sknn/S67/XXX1eXLl3K/D0BMC4CB2BwdrtdVqtV//rXv2QymbRs2TL99NNP6tSp01mvb9GiRalzJpNJ999/vyRpypQpWrhwobp27aoZM2boyJEjatasmWbNmqWsrCxNnTpVO3bs8ASOzMxMZWdn6/3339czzzyjxMRE9ejRQ1arVXv27CnTZzg9/PPf//5XderUUYsWLfTaa6/JZDJp2LBhat++vad/0qmhIafTKavV6tN3BcC4CByAgeXm5qpv377q0KGDhg0bpksvvVROp/OcQyrz5s3zvP7qq6+UmpqqMWPGqFmzZioqKtKAAQPUo0cPXXTRRVq6dKlefvllLVmyRGFhYapbt65eeukl2e12HT9+XNWqVdO0adPUvXt3XX755YqIiNDf/vY3tW7dWpK0Z8+eP6y21KxZs9Q8k02bNqlr166SpOjoaO3atUs7d+7UrFmztGfPHhUWFnraBhBcCByAgcXFxWnhwoV6+OGHlZSUpJUrV8put2vfvn1ewxtnatSokefX1atXV1FRkW699VYNHz5ciYmJevDBB2UymWQ2m+VyuWQ2m3XLLbd4teFyuXTLLbdo8uTJSkpKUmxs7B/2MScn56zVls2bN5e6b/PmzV6TRWfOnKm+ffuqRo0amj59ug4cOOAVmAAEDwIHYHCXXHKJFi9erP379ysiIkK33357qYBwJrP5/692T0hI0Lvvvqt3331XUVFR6tKli77//nuFhoZq1qxZeuedd/TJJ5+oWrVqXm24XC7PEtWmTZsqPDxcxcXFKikpkc1mU05Ojufn8fHxWr16tefeLVu26K677lJMTEypvo0cOVJTpkxR165dtWLFCq1cuVILFy7UkSNH5HK55Ha7deTIETkcDjkcDjVs2PBCvjoABkLgACqAyMhINW/eXJK0du1aZWZmasyYMZ6fz5gxQ3FxcRowYIBKSkq87jWZTBo8eLDXuc8++0yvvvqq3G63rrvuulLvt3LlStWrV08nTpxQu3btvH62detWvfXWW4qLi9OoUaPO2l+z2XzWZbvdunXTokWLNHv2bDmdTrndbq++hYaGqkePHnI6nYqMjNSmTZvO/cUAqDAIHEAFsW7dOnXu3Fm//PKL9u3bJ+nUhFKTyaTvv/9eLpdLhYWFSklJUatWrXTnnXd67p0yZYoGDRqkBg0aKD09XU888YScTqeWL1+uSy65xHNddna2evbs6ZmsWbVqVX3xxReqXr26QkND1bZtW40cOVL9+vXTsWPHtHnzZrndbhUUFHjaKCoq8lQrTCZTqc/RuXNnzZ07V2lpaerbt6/q1KmjKlWq6Nlnn9X+/fv11ltvBeorBFCOCBxABfDDDz/on//8p9LT02UymfT55597Kh5PPvmkzGazMjMz1bt3bzVu3FhNmjTx3Pvrr79q7ty5atSokWbMmKHly5fr0Ucf1eTJkzV48GCvSsTpYZLT58xms2rWrClJ+umnn3Ts2DFlZGToH//4h2e/jgMHDqhVq1al+my32xUWFuZ1bunSpfrggw8UHR0ti8WiRo0alVrGe+b9bre7VBsAKiYCB1ABTJo0SbfddpuaNGmiTZs26YYbbtArr7zi+fn69etVWFioV199tdQuoevWrZPFYlGPHj3Url07DRs2TI0bN9bkyZP1zjvvnLXCcTbLli1TeHi4NmzYoMcee0xTp06VVHoOx7lkZmaqcePGevjhh88aUiR5TYa95ZZb9Nxzz5WpbQDGRuAADG7p0qXKysryChjSqd04N27cqKZNm0qSOnbs6AkbH374oerWras2bdpo5cqVatu2rapWraqqVatKOrX1uCTdfPPNXsMeZ+4OeqaDBw/qnXfe0c0336y///3vGjZsmKKiotSyZcsyfYbT7zdhwgTPuVWrVslqtXoqHNOmTVNOTo5efPFFSVJxcTG7jAJBhMABGNi+ffs0efJk3X///YqNjVVJSYk+//xz7du3T507d1ZYWJimTp0qk8mk/Px8SaeGRd544w316NFDsbGx2rRpk8aPH+/V7ulg8eGHH/5phePIkSO6//77FRYWplGjRik2NlZjx47V1KlTFRERcdZ9OFwulwoKClS7dm1FR0d7AseZfr8CJSIiQhaLxTOEAyC4EDgAAwsPD9d1113nmQDqdDq1f/9+NW/eXMOHD/dsktWyZUvNmDFDH3zwgex2u6pWraq+fftqxowZcrvduuaaa7zazcvLK/VeGRkZeumllyTJM2m0uLhYd9xxhw4fPqz58+d79tUYNGiQunTpok8//VQFBQW6+eabvdpyu90qLi7Wyy+/rM6dO581cPxeSUmJHA6Hj98QgIrC5P6jGupfrKSkRB9//LFuuummC54k5nQ6/3Ai2p/58ccf9dZbb2n37t268cYb5Xa7VVRUpJycHNWtW1dHjx5VYWGhrrzySm3btk2SFBMTo4YNGyoyMlI7d+7Uxo0bFR4erpiYGNWrV081atTQ3r17FR0drRo1aignJ0fVq1fXoUOHZDKZdOLECVmtVlWrVk27d+9W8+bNZTKZdPjwYdWsWVM1atRQVlaWiouLFRUVpeLiYtWsWVMJCQk6efKkDhw4oNatW2vfvn0qKChQfn6+tm7dqsaNG6tVq1YqKChQZGSk1/+azWZlZWXJZrPJYrF4+nm296lRo4Z+/fVX9e7dW9WrV9dnn32mWrVqqV27doqNjdWPP/7ode7gwYNavHix8vPzVVxcrK5du2rXrl3au3evOnTooL59+8pkMmnfvn06efKkPvvsMzVt2lTXXHONjh07posuuuicG02VxbFjx7Rv376ztvX7nx0/flwZGRn66quvtH79eh09elSxsbGKiIjQsWPHFB0dLbfbrTp16nj63KpVK88KkR9//FHFxcWqUaOGQkNDFR0dLZPJpJ07d6qwsFDh4eEaOHCg2rVr53nPY8eO6YcfflBubq4yMjIUHx+vHTt2KCIiQr/88otuv/12/f3vf//Dz1a9evVzfsbT1y1btkwLFixQZGSkYmNj1bVrV3333XfKy8vThg0bvFap2Gw29enTR127dtUVV1yhQ4cOqUuXLjp27JgcDofnwW3ffvut0tPT1bRpU91www2e38vq1avrp59+8jyx1tffy5SUFO3du1eLFy/25bcaQAVRroHD4XCouLhYFotF7733nubNm6f33nvPa8Mgt9stu92u8PBwz9+6fvvtN917772aM2eOqlWrph49eqhWrVqaN2+eMjIyNHz4cC1btsxrpv65XH/99crJyQnIZ4RxjB8/XnXq1NHjjz/uGX7o2bOnBg8erD179pR6cNhpPXv21KhRo3THHXdo0KBBmj59+gX3ZerUqfruu+80f/78P5w3EUw6duyoN954o7y7AaAcleuQytatW5WUlKSQkBDPOv6OHTt6rd+PiIhQSUmJXnzxRXXr1k3SqTLzzz//rB49emjt2rUKDQ1VeHi4ioqK9MADDyg+Pr7MYWPEiBE+hY3x48dryJAhOnr0qLp06aKioiIfPzXKS40aNfTII4/IbrdLkqKiojR8+HAdP378D8NGVFSURo4cqT59+qioqEipqakX3I/mzZsrPDy8Um3hvWHDhj/cih2oyFauXKmLL764vLtRIZj//JLAufba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yYqMjJTL5dLChQvVpEmTC26XwAEAALzk5uZq+/btatWqlWJjY/3SJoEDAAAEHHM4AABAwBE4AABAwBE4AABAwBE4AABAwBE4AABAwFXawGGz2dSjRw/P608//VQ2m00tW7b0nJs+fboeeOCB8ugeAABBpdIFjr1790qSQkNDtX//fknS888/r4cffljHjh2Ty+XyXPvpp596rgEAAOevUgWOkpIS3XzzzerTp49CQ0NlMpl04MABzZkzR3fddZcaNGggk8kkSTpy5Ij27t2rUaNGlW+nAQAIApVu46+MjAw9+OCDMpvNstlsql+/vqRT1QxJat68uX744QfdeuutKigo8JwHAADnr1JVOCTp6quv1qZNmzR27FhJUlhYmObNm+d1zfjx47Vnzx4tWrSoPLoIAEDQqXQVjqFDhyo8PFyStG7dOnXp0kUOh0NRUVHKzMxUTk6OwsPD9f7776tp06bl3FsAAIJDpatw5ObmKicnRzk5OXK73fr666916NAhHThwQHXq1JEkORwOrV+/vpx7CgBA8Agt7w781ZYvXy673a49e/bolltuUUFBgQYOHKjBgwdLOjWHY+zYsZo0aZKio6N1++23l3OPAQCo+Cpd4LDZbLrhhhtUXFys0NBQPfPMMxo/frw6dOighg0bSpLuuOMO5efna+LEiQQOAAD8oNINqdx1111yu91auXKlJKlfv35q3bq17rvvPq/r7r//foWGhurFF18sj24CABBUKl3geOONN7R27VpFRUWppKREkjRt2jTt379fGzdu1JlzaDt06KDly5eXV1cBAAgalS5wxMbGqkqVKioqKlJYWJgkqWbNmurdu7esVqtX4OjcubMcDkd5dRUAgKBR6ZbFAgCAv16lq3DY7XZ99tlnXufOVsUoKChQu3bt9O233/5VXQMAIGhVulUqxcXFSk5O1jfffCNJ6t27t/bs2aOGDRvKbDbL5XJpxIgRuuiii/Tbb78pLi6unHsMAEDFV+kCh9Vq9TygTZLy8vIUGRmpZ555xnOuYcOGmjhxoiwWC4EDAAA/qHRDKiaTSSdPntRDDz2kgwcPymKxyGKx6Oqrr/YcxcXF2rhxoywWS3l3FwCAoFDpAsdpDRo00C233KLi4uJSPzv9tNgzKyEAAOD8VbohFUlyu93avn27GjVqpB9++EFut1vt27dXSUmJYmJiFBsbK7O50mYxAAD8rlL9qWq323XixAmZTCYNHjxYw4YNU9WqVfXiiy/qtttuU5cuXRQTE6OdO3fqiiuuKO/uAgAQNCrVPhwfffSRXn75ZeXk5CgrK0uS1LVrV61du9bruq1bt+rBBx+U3W73rGYBAADnr1JVOHr37q0777xTbrdbS5YskXRqeMXhcKikpMRztGrVSrfeeiu7jAIA4CeVqsIhnRpWufbaaxUTE6N//OMfeuWVV0oFizMni/7www/M5wAA4AJVukmjDodDLpdLc+fO1cCBAzVo0CD16dNHZrNZbrdbJSUlslgsslqt6tmzp7777jtdfvnl5d1tAAAqtEoXOMLCwjRr1izFx8dr0qRJevHFFzV27NhS19lsNplMJtnt9nLoJQAAwaXSDan8Xl5enmJiYkqdd7lc2r17t5o1a1YOvQIAILhU+sABAAACj9mQAAAg4AgcAAAg4AgcAAAg4AgcQBCx2+1yuVxe59xut8+rrU4vEfcHp9OpjIyMUu3t3btXJ0+e9Mt7ADA+Jo0CFdR1112nyMhIhYWFKT8/XzfddJNyc3O1Y8cOORwO5ebm6uKLL1ZJSYkcDoeWL1+uBx54QAMGDND111+vjIwMnfmff40aNXTJJZdIkubOnatvv/1W06ZN8/z8pZdeksPh0GOPPSaXyyWn06mwsDCvPjkcDpnNZoWEhHjOpaWl6dlnn9Ubb7yhmJgYWSwW1atXTz169NCdd96pIUOGyO12y+l0ymKxBPhbA1BeKt0+HECw2LhxoyTp4MGDuu2223TLLbeoSZMmkqT169frzTff1IIFC7zu6devn8aMGaMZM2YoKSlJvXr1kiTt379fDRo00EMPPaS8vDxZrVZZrVaveyMiIjxBYsuWLbrvvvsUGRnp+bnT6VRhYaHefvttXXPNNZKkAwcOaOrUqapbt67uueceNW7cWFdccYXq1aunX3/9VbNmzdK0adMUFRWlDh06aNKkSYH5sgCUOwIHUEEVFxdr5syZ+umnnzRy5EhP2JCkw4cPq2HDhqXu6d69uy6//HLVqlVLYWFhGj9+vH7++WdlZmbqv//9r7744gv973//89pd97ffflN+fr7y8/Nlt9u1b98+XXbZZfruu+/O2b9t27Zp1KhRGjRokIYOHarrrrtOb7zxhg4fPqyhQ4dq8eLFslqtGjZsmFatWqXQUP7vCAhm/BcOVGA7d+7UN998oylTpkg69Yf8+PHjdezYMblcLm3btk2SNGTIEN144436/PPP1bdvX8/9ubm56t+/v5544glJUkhISKlnB3355ZfKyMjQmjVrVLduXRUUFGjAgAG64oorztonl8ulkJAQxcfHa9SoUZ73W716tVavXq2pU6fqueeeU9OmTSVJzz77LM8rAioBAgdQAblcLplMJs2YMcMzt8JqtcrpdKp69er65JNPtHPnTjVo0EAzZ85UQUGBjh49qhkzZmjbtm2egBEWFqaoqKhzvlfv3r3Vq1cvLV++XJ07d9bdd9+twYMHKycnR6GhoXI6nXK73bJYLHI4HIqMjNTGjRsVGxvrCRuFhYWaM2eOli9frgkTJmjmzJnKysrS3XffrWuvvTbQXxcAAyBwABXQDz/8oOTkZEnSL7/8og0bNmj37t166aWXPNcMHz5cb775piTJbDarUaNGWrRokd5++21PRcHtdis8PPxP32/z5s2y2Wz68MMPtWPHDn3wwQee+RwzZ87UyZMn9eijj3rd43a7tXPnTq1atUpLlixRu3bt9MEHHyg2NlZdunTR/Pnz1b9/f3Xq1EmdOnVS06ZNFRsb65fvB4DxEDiACuiyyy7TqlWrlJ2drYcfflgzZszQPffco7p163quKS4uVnx8vNd9tWrV0t133y2TySS3261jx46pWrVqknTOZbALFixQfHy8unfvrvT0dGVkZOjkyZNq2bKl55p9+/bp+PHjuvLKKyVJb7/9tl5++WX16tVLgwYN0syZM7Vu3TpP2CkuLtbVV1+t5s2ba/78+XI6nUpNTZXJZPLX1wTAQAgcQBCoWbOmZs2apYKCAklSfn6+rFarqlSpIkley19HjRql22+/XUVFRdq/f79q1aol6dSS1rPtv7Fu3Tp9//33GjBggCRp2rRpuvTSS9W9e3fP3BHp1ByNxYsX65NPPlFERITuuOMO3XbbbYqKipLdbtcDDzygnJwcHThwQG3btpUkvffee7rqqqvUu3fvwH05AAyBmVpAEKhataqaNm3q2eDru+++U/369T0/Ly4uliRlZWVpz5496tq1q1asWKGNGzeqRYsWat++vSZMmCCXyyWHw+HV9uLFizVx4kTPnhtt27bVV199pRo1aqhz586e64YOHaqwsDDNnDlTkmS1WhUVFaXffvtNvXv39uwNMnXqVEmnJqxOnDhRTqczYN8LAOMgcABBJCEhQWPGjNHixYt13XXXadWqVbrzzjt1++23S5Jef/11DRkyRFFRUQoLC9PKlSsVGRmpgQMH6uTJk7rpppv0r3/9y6vNV199VZ06dfK8djqdmjFjhmdo5jSLxaKkpCQtWrRI+fn5nvN/+9vf1KRJE61evVqJiYnat2+fbDabVq5cqa5du5Ya9gEQnAgcQAWVn5+vX375xWtXz6ioKK1evVo7duzQkCFDtGbNGj3yyCNyOBzasGGD1q1bpyFDhkiSpkyZoi5duujOO+9UmzZtlJKSoujoaMXFxXkqIpI8+2M4HA65XC4VFxerd+/e6tmzp9asWaP//ve/nomnPXv21CeffOJZ+XJ6eCYpKUmNGzdWSEiI5s6dK6vVqqVLl6p///6SRJUDqASYwwFUUG+99ZbS09N1zz33SDo1jDJu3DjVqFFDixYtUkxMjJ5//nktWrRI//jHP/Tcc89pxIgRql69utLT07V582alpaVJksaOHasxY8YoPz9fb7/9tmbPnl1q1YndbpfT6VRkZKRGjBghSXrzzTcVFRXlmYMRGhqq2rVre+5p2bKlqlSp4hWKzmwvOTlZdrtddrtdX331laKjowPyXQEofzxLBQgSJSUl2rZtm1q1alXqZ7/88ovq1Knjee12u3X48GHFxcWVuvbIkSOy2+2qV69eQPsLoHIhcAAAgIBjDgcAAAg4AgcAAAg4AgcAAAg4AgcAAAg4AgcAAAg4AgcAAAg4AgcAAAg4AgcAAAi4/wfEknb3cOdxOQAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([2.85728193e-01, 9.25912403e-06, 9.86614358e-05, ...,\n",
       "       2.49934657e-05, 3.53584145e-04, 8.89063138e-01])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 31
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:43:23.806226Z",
     "start_time": "2024-09-20T13:43:23.247082Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.metrics import roc_auc_score\n",
    "# 初始化决策树分类器\n",
    "classifier = DecisionTreeClassifier()\n",
    "# 训练模型\n",
    "classifier.fit(X_train, y_train)\n",
    "# 预测概率\n",
    "y_pred_proba = classifier.predict_proba(X_test)[:, 1]\n",
    "# 计算 AUC\n",
    "auc = roc_auc_score(y_test, y_pred_proba)\n",
    "auc"
   ],
   "id": "cf88d8d15a4232a9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8028346623793717"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 32
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:43:26.068620Z",
     "start_time": "2024-09-20T13:43:23.806226Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 绘制 ROC曲线\n",
    "from sklearn import metrics\n",
    "import matplotlib.pyplot as plt\n",
    "# fpr假正率，tpr召回率，thresholds阈值，pos_label（设置正样本值）默认为None（标签数据为二分类的情况）\n",
    "fpr, tpr, thresholds = metrics.roc_curve(y_test, y_predict, pos_label=1)\n",
    "roc_auc = metrics.auc(fpr, tpr)  # auc为Roc曲线下的面积\n",
    "plt.plot(fpr, tpr, 'r')  # 绘制ROC曲线\n",
    "axline = np.array([0.,0.2,0.4,0.6,0.8,1.0])  # 斜线参考线坐标\n",
    "plt.plot(axline,axline,'gray',linestyle='--',alpha=0.5)\n",
    "plt.grid(b=True,axis='both',alpha=0.3)  # 显示网格\n",
    "plt.xlim([-0.05, 1.05])  # 设置x轴刻度范围\n",
    "plt.ylim([-0.05, 1.05])  # 设置y轴刻度范围\n",
    "plt.xlabel('FPR')  # x轴是False Positive Rate\n",
    "plt.ylabel('TPR')  # y轴是True Positive Rate\n",
    "plt.title('AUC = %0.2f' % roc_auc)\n",
    "plt.show()"
   ],
   "id": "720cb2a66a6984fd",
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "keyword grid_b is not recognized; valid keywords are ['size', 'width', 'color', 'tickdir', 'pad', 'labelsize', 'labelcolor', 'labelfontfamily', 'zorder', 'gridOn', 'tick1On', 'tick2On', 'label1On', 'label2On', 'length', 'direction', 'left', 'bottom', 'right', 'top', 'labelleft', 'labelbottom', 'labelright', 'labeltop', 'labelrotation', 'grid_agg_filter', 'grid_alpha', 'grid_animated', 'grid_antialiased', 'grid_clip_box', 'grid_clip_on', 'grid_clip_path', 'grid_color', 'grid_dash_capstyle', 'grid_dash_joinstyle', 'grid_dashes', 'grid_data', 'grid_drawstyle', 'grid_figure', 'grid_fillstyle', 'grid_gapcolor', 'grid_gid', 'grid_in_layout', 'grid_label', 'grid_linestyle', 'grid_linewidth', 'grid_marker', 'grid_markeredgecolor', 'grid_markeredgewidth', 'grid_markerfacecolor', 'grid_markerfacecoloralt', 'grid_markersize', 'grid_markevery', 'grid_mouseover', 'grid_path_effects', 'grid_picker', 'grid_pickradius', 'grid_rasterized', 'grid_sketch_params', 'grid_snap', 'grid_solid_capstyle', 'grid_solid_joinstyle', 'grid_transform', 'grid_url', 'grid_visible', 'grid_xdata', 'grid_ydata', 'grid_zorder', 'grid_aa', 'grid_c', 'grid_ds', 'grid_ls', 'grid_lw', 'grid_mec', 'grid_mew', 'grid_mfc', 'grid_mfcalt', 'grid_ms']",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mValueError\u001B[0m                                Traceback (most recent call last)",
      "Cell \u001B[1;32mIn[33], line 10\u001B[0m\n\u001B[0;32m      8\u001B[0m axline \u001B[38;5;241m=\u001B[39m np\u001B[38;5;241m.\u001B[39marray([\u001B[38;5;241m0.\u001B[39m,\u001B[38;5;241m0.2\u001B[39m,\u001B[38;5;241m0.4\u001B[39m,\u001B[38;5;241m0.6\u001B[39m,\u001B[38;5;241m0.8\u001B[39m,\u001B[38;5;241m1.0\u001B[39m])  \u001B[38;5;66;03m# 斜线参考线坐标\u001B[39;00m\n\u001B[0;32m      9\u001B[0m plt\u001B[38;5;241m.\u001B[39mplot(axline,axline,\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgray\u001B[39m\u001B[38;5;124m'\u001B[39m,linestyle\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m--\u001B[39m\u001B[38;5;124m'\u001B[39m,alpha\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m0.5\u001B[39m)\n\u001B[1;32m---> 10\u001B[0m plt\u001B[38;5;241m.\u001B[39mgrid(b\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m,axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m,alpha\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m0.3\u001B[39m)  \u001B[38;5;66;03m# 显示网格\u001B[39;00m\n\u001B[0;32m     11\u001B[0m plt\u001B[38;5;241m.\u001B[39mxlim([\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m0.05\u001B[39m, \u001B[38;5;241m1.05\u001B[39m])  \u001B[38;5;66;03m# 设置x轴刻度范围\u001B[39;00m\n\u001B[0;32m     12\u001B[0m plt\u001B[38;5;241m.\u001B[39mylim([\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m0.05\u001B[39m, \u001B[38;5;241m1.05\u001B[39m])  \u001B[38;5;66;03m# 设置y轴刻度范围\u001B[39;00m\n",
      "File \u001B[1;32mD:\\Anaconda\\Lib\\site-packages\\matplotlib\\pyplot.py:3144\u001B[0m, in \u001B[0;36mgrid\u001B[1;34m(visible, which, axis, **kwargs)\u001B[0m\n\u001B[0;32m   3137\u001B[0m \u001B[38;5;129m@_copy_docstring_and_deprecators\u001B[39m(Axes\u001B[38;5;241m.\u001B[39mgrid)\n\u001B[0;32m   3138\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mgrid\u001B[39m(\n\u001B[0;32m   3139\u001B[0m     visible: \u001B[38;5;28mbool\u001B[39m \u001B[38;5;241m|\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m,\n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m   3142\u001B[0m     \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs,\n\u001B[0;32m   3143\u001B[0m ) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m-> 3144\u001B[0m     gca()\u001B[38;5;241m.\u001B[39mgrid(visible\u001B[38;5;241m=\u001B[39mvisible, which\u001B[38;5;241m=\u001B[39mwhich, axis\u001B[38;5;241m=\u001B[39maxis, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n",
      "File \u001B[1;32mD:\\Anaconda\\Lib\\site-packages\\matplotlib\\axes\\_base.py:3196\u001B[0m, in \u001B[0;36m_AxesBase.grid\u001B[1;34m(self, visible, which, axis, **kwargs)\u001B[0m\n\u001B[0;32m   3194\u001B[0m _api\u001B[38;5;241m.\u001B[39mcheck_in_list([\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mx\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124my\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m], axis\u001B[38;5;241m=\u001B[39maxis)\n\u001B[0;32m   3195\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m axis \u001B[38;5;129;01min\u001B[39;00m [\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mx\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m]:\n\u001B[1;32m-> 3196\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mxaxis\u001B[38;5;241m.\u001B[39mgrid(visible, which\u001B[38;5;241m=\u001B[39mwhich, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[0;32m   3197\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m axis \u001B[38;5;129;01min\u001B[39;00m [\u001B[38;5;124m'\u001B[39m\u001B[38;5;124my\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m]:\n\u001B[0;32m   3198\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39myaxis\u001B[38;5;241m.\u001B[39mgrid(visible, which\u001B[38;5;241m=\u001B[39mwhich, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n",
      "File \u001B[1;32mD:\\Anaconda\\Lib\\site-packages\\matplotlib\\axis.py:1697\u001B[0m, in \u001B[0;36mAxis.grid\u001B[1;34m(self, visible, which, **kwargs)\u001B[0m\n\u001B[0;32m   1694\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m which \u001B[38;5;129;01min\u001B[39;00m [\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmajor\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m]:\n\u001B[0;32m   1695\u001B[0m     gridkw[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgridOn\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m (\u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_major_tick_kw[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgridOn\u001B[39m\u001B[38;5;124m'\u001B[39m]\n\u001B[0;32m   1696\u001B[0m                         \u001B[38;5;28;01mif\u001B[39;00m visible \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;28;01melse\u001B[39;00m visible)\n\u001B[1;32m-> 1697\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mset_tick_params(which\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmajor\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mgridkw)\n\u001B[0;32m   1698\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mstale \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mTrue\u001B[39;00m\n",
      "File \u001B[1;32mD:\\Anaconda\\Lib\\site-packages\\matplotlib\\axis.py:958\u001B[0m, in \u001B[0;36mAxis.set_tick_params\u001B[1;34m(self, which, reset, **kwargs)\u001B[0m\n\u001B[0;32m    945\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m    946\u001B[0m \u001B[38;5;124;03mSet appearance parameters for ticks, ticklabels, and gridlines.\u001B[39;00m\n\u001B[0;32m    947\u001B[0m \n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m    955\u001B[0m \u001B[38;5;124;03m    gridlines.\u001B[39;00m\n\u001B[0;32m    956\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m    957\u001B[0m _api\u001B[38;5;241m.\u001B[39mcheck_in_list([\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmajor\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mminor\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m], which\u001B[38;5;241m=\u001B[39mwhich)\n\u001B[1;32m--> 958\u001B[0m kwtrans \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_translate_tick_params(kwargs)\n\u001B[0;32m    960\u001B[0m \u001B[38;5;66;03m# the kwargs are stored in self._major/minor_tick_kw so that any\u001B[39;00m\n\u001B[0;32m    961\u001B[0m \u001B[38;5;66;03m# future new ticks will automatically get them\u001B[39;00m\n\u001B[0;32m    962\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m reset:\n",
      "File \u001B[1;32mD:\\Anaconda\\Lib\\site-packages\\matplotlib\\axis.py:1102\u001B[0m, in \u001B[0;36mAxis._translate_tick_params\u001B[1;34m(kw, reverse)\u001B[0m\n\u001B[0;32m   1100\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m key \u001B[38;5;129;01min\u001B[39;00m kw_:\n\u001B[0;32m   1101\u001B[0m     \u001B[38;5;28;01mif\u001B[39;00m key \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;129;01min\u001B[39;00m allowed_keys:\n\u001B[1;32m-> 1102\u001B[0m         \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[0;32m   1103\u001B[0m             \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mkeyword \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m is not recognized; valid keywords are \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m   1104\u001B[0m             \u001B[38;5;241m%\u001B[39m (key, allowed_keys))\n\u001B[0;32m   1105\u001B[0m kwtrans\u001B[38;5;241m.\u001B[39mupdate(kw_)\n\u001B[0;32m   1106\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m kwtrans\n",
      "\u001B[1;31mValueError\u001B[0m: keyword grid_b is not recognized; valid keywords are ['size', 'width', 'color', 'tickdir', 'pad', 'labelsize', 'labelcolor', 'labelfontfamily', 'zorder', 'gridOn', 'tick1On', 'tick2On', 'label1On', 'label2On', 'length', 'direction', 'left', 'bottom', 'right', 'top', 'labelleft', 'labelbottom', 'labelright', 'labeltop', 'labelrotation', 'grid_agg_filter', 'grid_alpha', 'grid_animated', 'grid_antialiased', 'grid_clip_box', 'grid_clip_on', 'grid_clip_path', 'grid_color', 'grid_dash_capstyle', 'grid_dash_joinstyle', 'grid_dashes', 'grid_data', 'grid_drawstyle', 'grid_figure', 'grid_fillstyle', 'grid_gapcolor', 'grid_gid', 'grid_in_layout', 'grid_label', 'grid_linestyle', 'grid_linewidth', 'grid_marker', 'grid_markeredgecolor', 'grid_markeredgewidth', 'grid_markerfacecolor', 'grid_markerfacecoloralt', 'grid_markersize', 'grid_markevery', 'grid_mouseover', 'grid_path_effects', 'grid_picker', 'grid_pickradius', 'grid_rasterized', 'grid_sketch_params', 'grid_snap', 'grid_solid_capstyle', 'grid_solid_joinstyle', 'grid_transform', 'grid_url', 'grid_visible', 'grid_xdata', 'grid_ydata', 'grid_zorder', 'grid_aa', 'grid_c', 'grid_ds', 'grid_ls', 'grid_lw', 'grid_mec', 'grid_mew', 'grid_mfc', 'grid_mfcalt', 'grid_ms']"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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jWz2Od1jLnmJdxEREZFM0akZERERsYyCiIiIiFhGQUREREQsoyAiIiIillEQEREREcsoiIiIiIhlFERERETEMgoiIiIiYhkFEREREbGMgoiIiIhYpmCDSFdXF7fccgubN29mx44dpLOS/UsvvcSNN97I1Vdfzc6dO3NQZf5bTp937drF1q1b6ezs5LbbbmN0dDQHlea/5fT6tHg8zgc+8AF+8YtfZLHCwnAxff785z/P9u3bs1hd4VhOnx955BG2bNnCpk2b+OxnP8vk5GQOKs1/k5OT3HDDDQwODqb1/Fx/FhZkEInFYmzbto3Ozk727NlDMBhk7969591nYmKCO+64g5tuuoldu3bxwx/+kP379+eo4vy0nD6//PLLfPvb3+aBBx7gmWeeIRqNsmPHjhxVnL+W0+s3e+SRR+jq6spihYXhYvr84osvsn//fj73uc9lucr8t5w+//KXv2Tfvn089thjPP744/rZkaaJiQm2bdvG0NBQ2s/P+WehWYCefvppc/Pmzebc3JxpmqZ5+PBh89Zbbz3vPjt37jR/8zd/00ylUovHuPvuu7Neaz5bTp+///3vm0899dTi4927d5vvf//7s1pnIVhOr0/r7e01r7zySvP666839+/fn80y895y+zw/P2++5z3vMX/wgx9ku8SCsJw+P/LII+aOHTsWH+/bt8/8yEc+ktU6C8EnPvEJ8+/+7u/MdevWmQMDAxd8vhWfhQU5InLkyBEuv/xyvF4vAOvXrycYDJ53n6NHj3LNNddgvHHf4o0bN3Lo0KGs15rPltPnD3/4w7z//e9ffNzb20tLS0tW6ywEy+n1aV/5yle4/fbbaWhoyGaJBWG5fX7ooYeIRCI4HA5+/vOfL+l0TjFaTp87Ojp4+umnOX78OOPj4+zevZstW7bkoty8tn37dj7xiU+k/XwrPgsLMoiEw2EaGxsXHxuGgc1mY3p6Ou19ysrKGBkZyWqd+W45fX6zyclJdu3axcc+9rFslVgwltvrPXv2EA6Hue2227JdYkFYTp+Hh4fZuXMnLS0tDA8P841vfIPPfOYzCiPnsZw+X3vttbS0tPC+972PLVu2MD8/z6c+9alclJvXmpqalvR8Kz4LCzKI2O12XC7XGdvcbjeRSCTtfS70fFlen9/sa1/7GldccQXXXXddFqorLMvp9cTEBA8++CD33XcfDocj2yUWhOX0ee/evfj9fnbu3Mmdd97Jd7/7XX75y1/ys5/9LNvl5q3l9PnHP/4xw8PD/OQnP+EXv/gFHR0dfOELX8h2qUXHis/CggwiPp+PiYmJM7bNzs7idDrT3udCz5fl9fm03bt38/LLL3P//fdnq7yCspxe33fffXzoQx/i0ksvzXZ5BWM5fR4ZGeGaa65Z/OFdVlZGS0tL2jMUitFy+vzkk0/y0Y9+lPb2diorK/nyl7/MT3/6U2ZmZrJdblGx4rOwIIPIhg0bePXVVxcfDw4OEovF8Pl8ae9z+PBhamtrs1pnvltOnwFee+017r//fh588EH8fn+2yywIy+n1j370I773ve9x5ZVXcuWVV/LKK6+wbds2Hn744VyUnJeW0+e6ujqi0eji41QqxcmTJ1mzZk1Wa81ny+lzMplkbGxs8fHpaf/JZDJ7hRYhKz4LCzKIbN68mVAoxL59+wB4+OGH2bJlC3a7nXA4TDweP2ufG264gVdeeYX9+/eTSCR49NFH2bp1a44rzy/L6fPY2Bjbtm3j9ttvp7Ozk9nZWWZnZ3Ncef5ZTq+feeYZnnjiCfbt28e+ffu47LLL+PrXv86tt96a4+rzx3L6fOONN/Lcc8/x1FNPcfLkSb75zW8Si8XYtGlTjqvPH8vp86ZNm/j+97/PP/3TP/H4449z1113ccUVV1BVVZXj6gvDivoszOqcHAs9/fTT5saNG83f+I3fMK+66iqzq6vLNE3TvP76682nn376Lfd57LHHzM7OTvPqq682r7/+evPUqVO5LDkvLbXPO3fuNNetW3fWH7mw5byn3+zjH/+4pu+mYTl9fu6558z/8B/+g7lhwwbzpptuMl9++eVclpyXltrnSCRibt++3dy6davZ2dlpfvzjHzf7+/tzXXbe+vXpuyvps9AwzcK9tHtkZIQDBw6wadMmqqur09qnv7+fYDDIVVddRVlZWZYrLAzL6bMsj3qdG+pzbqjPK1cuPwsLOoiIiIjIylaQ14iIiIhIflAQEREREcsoiIiIiIhlFERERETEMgoiIiIiYhkFEREREbGMgoiIiIhYRkFERERELKMgIiIiIpb5/wAmyTMh634S0wAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 33
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-20T13:43:26.069623Z",
     "start_time": "2024-09-20T13:43:26.069623Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 预测给定的测试集\n",
    "pre_test = new_test_data[features]\n",
    "result = GBC_model.predict_proba(pre_test)[:,1]\n",
    "test_result = new_test_data[['User_id','Coupon_id','Date_received']]\n",
    "test_result['Probability'] = result\n",
    "# 查看描述性结果\n",
    "test_result['Probability'].describe()\n",
    "test_result.to_csv('./two_new_sample_submission.csv',index=None,header=None)"
   ],
   "id": "7ec773e9b496b248",
   "outputs": [],
   "execution_count": null
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
